Section 3.5 3.7

master
大蒟蒻 9 years ago
parent d860218816
commit 51276e82ca

@ -0,0 +1,116 @@
/*
:Zu
iB@B@i iGM;
i@@B@@@B2 7B@B@B@.
@@@@B@B@B@u iM@B@B@B@BL
B@B@N OB@@@BY F@@@B@BMM@B@O
E@B@B .O@B@B@: :BB@@@B@0U7FB@B@
:@B@B. .@B@B@O YB@B@B@OSYJjuU@B@B
@B@B5 rB@B@B7 u@B@B@BNuYj1UFuuB@B@i
2@@@@ N@@@@M 5B@B@BBkjYU252511JMB@B1
@@B@i :@@@B@ J@B@@@MFLju515151FUJE@B@M
F@B@B @@@B@, iB@B@@B1YJ12F152F1511JPB@B@
@B@B: EB@@@. . .::::.... O@@B@BSLuU51F151F15152u2@B@B
L@@B@ 0B@B@ .:rLuk8MB@B@B@B@B@B@@@B@B@B@B@@@@@B@B@G@@@B@PuY2251F1F151F1F1Fu2B@B@.
B@@@Y @B@BB2MB@B@@@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@BMujU52F1F151525151511Y@@@Bi
@B@B @B@@@B@@@B@@@B@@@BBZNuu7ri:,,.. B@B@0kN88MB@BEYu252525151F252F1F15UJM@B@J
JB@B@ 0@B@@BE17i,. @B@BUvJYJLJjUj125151F152525151F1F55YO@@BX
B@B@v .B@B@jUU5252221212F2515251F15252F1F2JE@B@O
@B@B. @B@BFJF1F2F2F2F2515151F152F251F5515YEB@B@
.B@@@ B@B@ELU52F152F251525151515252F1F2F2JX@B@B
v@B@B vB@B@uj255F15151F2F15252515151F1S15JNB@B@
PB@BX @B@BBYu2F1F1F2F15152F2515151F152F1jP@B@B
B@B@v @B@BBjJu5251S25151F15251515151F15JNB@@B
BB@@: @B@B@XYL2UF151F15151F2F251F2F251j0@B@B
B@B@i @B@B@BPJJJU251111152525152121Uuv1B@B@B.
FB@B@B vB@B@B@ZSjjLujUu1U1u2u2uuJJLj2XZ@@@B@@:
@B@B@u v@@@B@B@MOXkuujuJjJuu55qEMB@@@B@B@B@Bi
:@B@B@ :P@B@B@@@B@B@B@B@B@B@@@B@B@B@U L@B@Bi
r@B@BE .vO@@B@B@B@B@B@B@B@B@MU: Y@B@B,
r@B@Bu ,rL52F15Uv;: k@B@B
,@@@BJ :BB1 B@B@M
. @B@BP .5X, @B@B@Bv B@B@:
r@B@@@@Mu: BB@B@ .B@B@ .8B@B@B@BF, uB@B@
7B@B@B@@@B@B8B@@@ 7B@B@M iMB@B@@@B@Xr. @B@B:
.:iJZ@B@B@B@@@k :5@B@B@X ,SB@B@B@B@B@BPYi.. P@B@Z
.rB@B@B@BMi r@BONE0EM@B@B@B@B@: i5@B@@@B@B@B@@@B@ :B@B@
@B@B@B@B@O @B@B@B@@@@@B@@@5. :LEB@B@B@B@B: @B@B
iB@B@ iB@B7 :ZM@B@B@BO57, .:i B@B@ii2OOk
M@B@2 @B@B@B@B@@@
@B@B. .jOM07 .UB@B@B@B@@@B@r
.B@B@ MB@B@@@B7 M@B@B@B@Bi
r@B@B 7O@@BJ SB@B@B@B@B. PB@BP@@B@
uB@BO @@@B@B@Br 8@@@B@B@B@: @B@B
S@@@F @B@B@B@B@@ .B@B@B@B@B ZB@Bk
SB@B1 B@B@B@B@@@ 5@B@B@7 B@B@.
v@B@k .B@@@@@B@r 2@B@B
vB@B@:r7; vBB@BF @B@B:
:71Z@B@B@B@B@B@B@BM 8B@BE
v@B@B@B@@@B@B@@@B@B@B@r @B@B@B@@@:
@B@B@B@BMFJi: MB@BJ .B@B@B@B@@@B@Ov
.7: :@B@@ ;@@B@B@B@B@@@@2
B@B@v Z@@@B ,LMB@B@B@r
rB@B@ B@B@B .EB@B@
@B@BM .B@B@B .M@j
@B@B1 rB@@@M
:@B@Bj i8B@B@B@B@B@Bu GB@B@F
i@B@BX M@@@B@@@B@B@B@B@ :@@@B@i
i@B@B@ 7B@BFri:,:ivOB@X ,B@B@BM
.@B@B@L ,BB@@@Bi
qB@B@@7 jB@B@B@L
:B@B@B@2. JB@@@B@Bv
:@B@B@B@u. ,FB@B@B@BP,
.S@B@B@B@0r :jBB@B@B@@@B.
:P@B@B@B@BOv, .:7kO@B@B@B@@@B@B@@@
.vBB@B@B@@@B@ONjr:, ,:rYXE@B@@@@@@@B@@@B@MEuri@@@B.
J@B@B@B@B@B@@@@@B@B@B@@BM8ENFPFUuUuuuU5XFP0GOMB@B@B@B@B@@@B@B@B@B@B@BMX2vr::::,iB@B@
rB@BM71NMB@B@B@@@B@@@@@B@B@B@B@B@@@B@@@B@@@B@B@B@B@@@B@@@B@BBZqULri:::::::;;rr:r@B@B.
u@B@E.,::::iirvLJFFN0OOMM@B@BMO@B@B@@@B@B@@@@@B@MuL2JY77ii:::::::ii;irrrr7r7rr:iB@B@.
1B@BZ,;rr;;ii:i::::::::::::,.:Z@@B@B@quLYJqB@B@B@q: ::::ii;;rrrr7rrr7r7rrii::::u@B@B.
F@@@P.::i;rrrrrrrrrr;r;r;ri,7@@@@@u. L@@B@BL,rr7r7r7r7rrrrrrii::::iLSBB@B@B@:
OB@B@EF7;::,::ii;ir;rrrrr;:7@B@BO ..... N@@@BL:rrrrri;ii:::::irLF8B@B@B@B@B@Bv
Z@B@@@B@B@MZ5J7ri:::,:::::,@B@@E .,,:,,.. N@B@B,.:::::i;7j2NO@B@B@B@B@B@E:F@B@P
@B@BBB@@@B@B@B@@@B@MOqX1u7UB@B@ .:,,,,.. ,. B@B@k1NOM@B@B@@@B@B@B@B@BSi iB@B@
iB@B@ iYG@@@@B@@@B@B@@@B@B@B@M ,,:,,., rB@B@5. ZB@B@B@B@@@B@@@B@BBF7, @B@B
B@B@u :rjSO@@B@B@B@B@B@ .,,,.,. r@@@@@B8M@B@B@B@BOFu;:. B@B@i
S@B@B @B@@r ....... :5@B@B@B@B 5B@BB
L@@@B, 7@B@Bi . . . .B@B@Bu @B@@.
G@B@B; q@B@Bk 7@B@BM G@B@@
B@B@B: L@B@B@O7. .rOB@B@Bu B@B@B
qB@M ZB@B@@@B@@@B@B@B@Z .B@@@B
7MB@B@B@B@B@Mv S@8.
,:7ri.
... . .. ..
:7FB2 B@B r. :@B. L@@ @B ,.,.,..
.@@@@B@B@B@@@B OB@ L@BO j@@ B@B@B@B@B@B@@@B@ 0PXSXSSJMB@L5FXSSuNB@u5SXSXXZi ,,,,., iB@B@@@@ B@B@B@B@@@B@M
@BOurE@B F@B M@@M: O@i :::,:,,.. :@B@O @@@@B@@@B@B@B@B@B@@@B@B@@@B@B2 @B@B@B .@E .B@ .,,.... @BL..
rBB rB@ B@Y vEFL@BNuF2uj u@BX .B5 F5 B@ B@ BE O@. q@
v@B :@@ E@B@B@B@B@@@ XB@P k1jujjSMG0qPqMB@BBB@B@B@v @B B@ @0 @B iLUUuY. ZB,
@B@B@B@B@B@B@@@B@B@B@B@B@B@B@B L@u .@B @@@ @B@B@BBOMOM@E2PXqkLi:vi,. @@ B@ Bq 0B, B@@@@@Y N@:
ii::,.S@B .:,:,.:@@i.::,. ,i @B. JBq 0@1 iJ r@Y @@ @B @B @1 B@ MB .B7 NB:
7B@ @@ :@7 :@@ B@i.:::::: MBO ,::::i MB@ B@O E@B7 B@ B@ Bk @B: O@ ,@r k@,
r@M r5 @Bu 5@Bk M@v @B B@B@B@B@B@@@B@B@B@: 5B@. BE r@@F @B @B @E @B OB. :B7 PB:
,:MB@B@B@B@. U@B .@@@. .@B PB8 E@q ;i .O; J B@ B@ B8 :@q E@ .@r k@,
B@B@@@B@BPu7, B@ uB@5 v@@S B@ E@E UEkk5277J1YvrBB@r7LYrLUFFkkqE: @B MB @Z B@ PBi YBv NB:
0Mui. LBB MB@BB 7B@B@: OBO @B@B@B@B@O@B@B@B@B@O@B@B@@@B@; @@ @@ .@0 @B P@B@B@v N@:
v@B qB@Br iXi B@BP 8@O 7@@ iBX @Bi @B@B@B @B7v@BG @B: OB:
JB@ JB@B51@B M@@ LB@:rB@Bi GBM ,B@BL r@8 vB@8, .@@ 5@ .@Gq@Bv , Z@:
L@B PB@B@J M@B. @@7 i@B@ 0@7 B@M iO@@@r YBB r@B@BY. :. :@q MB:
G@N5S@BB Z@S. P@BZ.uB@ ,B@B7 UB@B@@@B: OB@@@5 j@B L@B@B@, iBB FMq1OB@
2B@B@MJ :@B@B@: Sj NFXF5i ,@u qB@ .Y. i@O Y@B@BZ.
.. :Ur
k :..,, r ii v: ir .L E ..,,:,iivv :.. ,F : u .:iu1
.u5BjL:i@@rB@ @k :Bi 7@Bu. uMiNBuL ,@SSuEB5qZUO8 :qN1uM@7777: :v@B i2X@vS@ Bv @ 7B7v7i:
.@ ,B UB v@: BX Li O O7u 2 O. 28 .Br,S :B. r7vvrE@7vjLL :B Yiv@:7@j BqiB 7B
:LuB27i8 uG .B@r..:ii,,F@: JO1@ 0;F B7@: Lr rOui k. M1::2@:ii@ ,BqF i7@,78 ON.. rB@Y7Z@
2 @r NY55E: r:@B77rBr :2@.v1ik .@., uM ,OG:Bq Br @5::2@,:iB, ,, @ :;vBiii @8ir vJY7 Mu
B 8E7 B 0O .@ @i :@B7 Mi 5B5: .P: i,BF j i2 5Yi:F@:ii8 .B7G 77J@rvJ: B7 @ P7 BPG
:@k@. @v7rO7 2B B B, i@ @ iJujLr@G77uJU .7r7iNBi;7rr uBL :.:B .. .@ B B BBJ
@i 1ZXqkEq0X0 7@P qk0B5 BE 7@ B B7 ZXF2U8@j11k0r YB.rSuuuGjUkX 1P @PXv@i X@:
.,. .
*/

@ -0,0 +1,15 @@
#include <cstdio>
const int N = 1 << 16 | 1;
int phi[N];
int main()
{
for (int i = 2; i < N; i++) if (!phi[i])
for (int j = i; j < N; j += i)
{
if (!phi[j]) phi[j] = j;
phi[j] = phi[j] / i * (i - 1);
}
for (int p; ~scanf("%d", &p);)
printf("%d\n", phi[p - 1]);
return 0;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 KiB

@ -0,0 +1,6 @@
int inv(int a, int m)
{
int x, y;
exgcd(a, m, x, y);
return (x % m + m) % m;
}

@ -0,0 +1,20 @@
#include <cstdio>
typedef long long int64;
int64 gcd(int64 a, int64 b) { return b == 0 ? a : gcd(b, a % b); }
void exgcd(int64 a, int64 b, int64 &x, int64 &y) { b == 0 ? (x = 1, y = 0) : (exgcd(b, a % b, y, x), y -= x * (a / b)); }
int main()
{
int64 s, t, p, q, L;
scanf("%lld%lld%lld%lld%lld", &s, &t, &p, &q, &L);
int64 a = (p - q + L) % L, b = L, c = (t - s + L) % L;
int64 x = 0, y = 0, g = gcd(a, b);
if (c % g)
puts("Impossible");
else
{
a /= g, b /= g, c /= g;
exgcd(a, b, x, y);
printf("%lld", (((x % b + b) % b) * c) % b);
}
return 0;
}

@ -0,0 +1,15 @@
#include <cstdio>
const int N = 1 << 16 | 1;
int phi[N];
int main()
{
for (int i = 2; i < N; i++) if (!phi[i])
for (int j = i; j < N; j += i)
{
if (!phi[j]) phi[j] = j;
phi[j] = phi[j] / i * (i - 1);
}
for (int p; ~scanf("%d", &p);)
printf("%d\n", phi[p - 1]);
return 0;
}

@ -0,0 +1,19 @@
#include <cstdio>
inline int abs(int x) { return x >= 0 ? x : -x; }
void exgcd(int a, int b, int &d, int &x, int &y) { !b ? (x = 1, y = 0, d = a) : (exgcd(b, a % b, d, y, x), y -= x * (a / b)); }
int main()
{
int a, b, c, x, y, g, u1, v1, u2, v2;
while (~scanf("%d%d%d", &a, &b, &c) && a + b + c)
{
exgcd(a, b, g, x, y);
a /= g, b /= g, c /= g;
u1 = (x % b * c % b + b) % b;
v1 = abs((c - u1 * a) / b);
v2 = (y % a * c % a + a) % a;
u2 = abs((c - v2 * b) / a);
if (u1 + v1 > u2 + v2 || (u1 + v1 == u2 + v2 && a * u1 + b * v1 > a * u2 + b * v2)) u1 = u2, v1 = v2;
printf("%d %d\n", u1, v1);
}
return 0;
}

@ -0,0 +1,35 @@
#include <cstdio>
typedef unsigned long long u64;
const size_t MAXN = 1 << 16 | 1;
bool notprime[MAXN];
int prime[MAXN], pcnt, x;
inline u64 fast_pow(u64 a, u64 b, u64 m)
{
u64 ret = 1;
for (; b; a = a * a % m, b >>= 1)
if (b & 1)
ret = ret * a % m;
return ret;
}
int main()
{
for (size_t i = 2; i < MAXN; i++)
if (!notprime[i] && (prime[pcnt++] = int(i)))
for (size_t j = i * i; j < MAXN; j += i)
notprime[j] = true;
while (~scanf("%d", &x))
for (int a = 2, flag = 0; flag == 0; a++)
{
flag = 1;
for (int i = 0, k = x - 1; i < pcnt && k > 1 && flag; i++)
if (k % prime[i] == 0)
{
flag = fast_pow(a, (x - 1) / prime[i], x) != 1;
while (k % prime[i] == 0)
k /= prime[i];
}
if (flag)
printf("%d\n", a);
}
return 0;
}

@ -4,6 +4,7 @@
\begin{document}
\setcounter{page}{0}
\maketitle
\begin{center}\includegraphics[height=20cm]{assets/banner.png}\end{center}
\newpage
\tableofcontents
\newpage
@ -298,4 +299,34 @@ Manacher 模板题
\subparagraph{算法说明}
$$M_i=\prod\limits_{j\ne i}m_j\to gcd(M_i,m_i)=1\Rightarrow \exists p_i,q_i,\,M_ip_i+m_iq_i=1$$
$$(e_i=M_i p_i)\equiv int(j==i)\pmod{m_i} \to \sum\limits_1^r e_i a_i\mod{\sum\limits_1^r m_i}\mbox{是方程的最小非负整数解}$$
\paragraph{练习题}
\subparagraph{\href{http://poj.org/problem?id=1061}{POJ1061} - 蛤蛤的约会} +1s
\codeinput[蛤蛤的约会]{assets/day3/poj1061.cpp}
\subparagraph{\href{http://poj.org/problem?id=2142}{POJ2142} - The Balance}$ax+by=c$的一组解,使得$|x|+|y|$尽量小,在前者尽量小时$|ax|+|by|$尽量小
\codeinput[The Balance]{assets/day3/poj2142.cpp}
\subsection{逆元}
\paragraph{解一元线性同余方程}
$$gcd(a,m)=1\Rightarrow\exists x,ax\equiv1\pmod{m}$$
$$ax\equiv1\pmod{m}\iff\exists k\in\mathbb{Z},\,ax-km=1$$
\codeinput[\ ]{assets/day3/inv.cpp}
\paragraph{费马小定理}
$$\forall p\in\mathbb{P}\to x^p\equiv x\pmod{p}$$被称为费马小定理,若$p\nmid x$,有
$$x^{p-1}\equiv 1\pmod{p}$$于是有
$$\forall p\in\mathbb{P},x\in\mathbb{Z}\to x^{-1}\equiv x^{p-2}\pmod{p}$$
使用快速幂即可计算。
\subsection{待续:高次不定方程}
\subsection{原根}
\paragraph{}
$$n>1,a\in\mathbb{Z},gcd(a,n)=1\to\exists r\in[1,n],a^r\equiv1\pmod{n}$$ $r$的最小整数值称为$a$$n$的阶,记为$Ord_n(a)$
\paragraph{阶的性质}
$$gcd(a,n)=1,r=Ord_n(a),\forall N\in\{x|a^N\equiv1\pmod{n}\}\Rightarrow r|N$$
$$gcd(a,n)=1\Rightarrow Ord_n(a)|\varphi(n)$$
$$\mbox{特别的,}p\in\mathbb{P},gcd(a,p)=1\Rightarrow Ord_p(a)|p-1\mbox{,显然}\varphi(p)=p-1$$
\paragraph{原根} $n\in\mathbb{N_+},a\in\mathbb{Z},Ord_n(a)=\varphi(n)$,则称$a$为模$n$的一个原根,由阶的定义可知原根和$n$必然互质。
\paragraph{求质数$p$的原根算法}
暴力从小到大枚举$g\in\mathbb{N_+}$$\forall a\in\{x\;|\;x|p-1,x\in\mathbb{P}\},g^{\frac{p-1}{a}}\not\equiv1\pmod{p}$
\codeinput[Primitive Root]{assets/day3/proot.cpp}
\paragraph{练习题}
\subparagraph{\href{http://poj.org/problem?id=1284}{POJ1284} - Primitive Roots} 如果$n\in\mathbb{N_+}$有一个原根,那么$n$一共有$\varphi(\varphi(n))$个不同余的原根
\codeinput[Primitive Roots]{assets/day3/poj1284.cpp}
\end{document}
Loading…
Cancel
Save