[loj3069]整点计数
阅读原文时间:2023年07月09日阅读:1

1.基础知识

定义

定义1.1(高斯整数):$\mathbb{Z}[i]=\{a+bi\mid a,b\in Z\}$(其中$i$为虚数单位,即$i^{2}=-1$)

定义1.2(范数):$N(\alpha)=a^{2}+b^{2}$(其中$\alpha=a+bi\in \Z[i]$),显然$N(\alpha)\in N$

定义1.3(基础运算):$+$和$\times$,运算规则与通常的约定相同($\times$可省略)

定理1.1:$N(\alpha\beta)=N(\alpha)N(\beta)$

定义1.4(整环):集合$X$和定义在$X$上的运算$\oplus$和$\otimes$($\otimes$可省略),满足以下条件:

  • $\oplus$和$\otimes$满足交换律、结合律和分配律
  • 存在零元素$o$,使得$\forall \alpha\in X,o\oplus\alpha=\alpha$
  • 存在幺元素$e\ne o$,使得$\forall \alpha\in X,e\alpha=\alpha$
  • $\forall \alpha\in X$,满足$\exists \beta\in X,\alpha\oplus\beta=o$
  • 若$\alpha\beta=o$,则$\alpha=o$或$\beta=o$

则称$(X,\oplus,\otimes)$构成一个整环

定理1.2:$(\Z[i],+,\times)$构成一个整环

其中零元素$o=0$,幺元素$e=1$(显然两者唯一)

根据第4个条件(显然$\beta$唯一),定义$+$的逆运算$-$,与通常的约定相同

定理1.3:$\forall \alpha\in \Z[i],o\alpha=o$

定理1.4:若$\gamma\ne o$且$\alpha\gamma=\beta\gamma$,则$\alpha=\beta$

定理1.5:$\forall \alpha,\beta\in \mathbb{Z}[i]$且$\alpha\ne o$,$\exists p,r\in \Z[i],\beta=p\alpha+r$且$N(r)\le\frac{N(a)}{2}$

设$\alpha=a+bi$,则$(a+bi)(a-bi)=a^{2}+b^{2}=N(\alpha)$

因此,令$q=\frac{(a-bi)\beta}{N(\alpha)}$,则$q\alpha=\frac{(a+bi)(a-bi)}{N(\alpha)}\beta=\beta$

记$[x]$表示与$x$最接近的整数,显然$|x-[x]|\le \frac{1}{2}$

设$q=a'+b'i$(其中$a',b'\in Q$),取$p=[a']+[b']i\in \mathbb{Z}[i],r=\beta-p\alpha$即可,此时有
$$
 N(r)=N(\beta-p\alpha)=N((q-p)\alpha)=((a'-[a'])^{2}+(b'-[b'])^{2})N(a)\le \frac{N(a)}{2}
$$

定义1.5(单位元素):$\epsilon\in \Z[i]$,满足$\exists\alpha\in \Z[i],\epsilon\alpha=e$,并记$\alpha=\epsilon^{-1}$(显然$\alpha$唯一)

定义1.6(单位元素集合):$\varepsilon=\{\epsilon\mid\epsilon$为单位元素$\}$

定理1.6:$\varepsilon=\{\pm1,\pm i\}$

定义1.7(相伴):$\alpha$与$\beta$相伴当且仅当$\exists\epsilon\in \varepsilon,\epsilon \alpha=\beta$,并记作$\alpha\sim \beta$

定理1.7:相伴关系具有对称性、传递性和自反性

整除

定义1.8(整除):$\alpha$整除$\beta$当且仅当$\exists k\in \Z[i],k\alpha=\beta$,并记作$\alpha\mid \beta$

定理1.8:整除具有传递性和自反性

定理1.9:$\alpha\sim \beta$当且仅当$\alpha\mid \beta$且$\beta\mid \alpha$

定义1.9($\alpha$的约数):$\beta\in \Z[i]$,满足$\beta\mid\alpha$

定义1.10($\alpha$的显然约数):$\beta\in \Z[i]$,满足$\beta\in \varepsilon$或$\alpha\sim\beta$

定理1.10:$\alpha$的显然约数为$\alpha$的约数

定义1.11(不可约数):$\xi\in \Z[i]$,满足$\xi\ne o,\xi\notin \varepsilon$且$\xi$的所有约数都为显然约数

定义1.12(素数):$\xi\in \Z[i]$,满足$\xi\ne o,\xi\notin \varepsilon$且$\forall \alpha,\beta\in X,\xi\mid \alpha\beta$当且仅当$\xi\mid\alpha$或$\xi\mid\beta$

定理1.11:素数为不可约数

假设$\xi$为素数但不为不可约数,由于$\xi\ne o,\xi\not\in \varepsilon$,即有约数$\alpha$满足$\alpha\not\in \varepsilon$且$\xi\not\sim\alpha$

记$\xi=\alpha\beta$,则$\alpha,\beta\mid \xi$,考虑$\beta$的性质:

若$\beta\in\varepsilon$,显然$\xi\sim\alpha$,矛盾

若$\xi\sim \beta$,即$\exists\epsilon\in \varepsilon,\xi=\epsilon\beta=\alpha\beta$,由于$\xi\ne o$,必然有$\beta\ne o$,也即$a=\epsilon\in \varepsilon$,矛盾

综上,即$\beta\not\in \varepsilon$且$\xi\not\sim\beta$

事实上,这一段说明:若$\xi\ne o,\xi\not\in \varepsilon$且$\xi$不为不可约数,则$\xi=\alpha\beta$(其中$\alpha,\beta\not\in \varepsilon$且$\xi\not\sim\alpha,\beta$)

同时,根据定理1.8有$\xi\mid\alpha\beta$,也即$\xi\mid\alpha$或$\xi\mid\beta$

由$\alpha,\beta\mid\xi$,即可得到$\xi\sim\alpha$或$\xi\sim\beta$,矛盾

定义1.13($\alpha$和$\beta$的公约数):$d\in \Z[i]$,满足$d\mid\alpha,\beta$

定义1.14($\alpha$和$\beta$的最大公约数):$\alpha$和$\beta$的公约数$d$,满足$\forall \alpha,\beta$的公约数$d',d'\mid d$,并记$d=\gcd(\alpha,\beta)$

分解

定义1.15($\alpha$的分解):若干个不可约数$\xi_{1},\xi_{2},…,\xi_{k}\in \Z[i]$,使得$\alpha=\xi_{1}\xi_{2}…\xi_{k}$

定理1.12:$\forall \alpha\in \Z[i]$且$\alpha\ne o,\alpha\not\in \varepsilon$,$\alpha$存在分解

记$\sigma(\alpha)$为$\alpha$的约数个数(相伴视作相同),对其按照$\sigma(\alpha)$归纳即可,具体如下——

由于$\alpha\ne o$且$\alpha\not\in\varepsilon$,即$\epsilon$和$\alpha$都为$\alpha$的约数且不相伴,也即$\sigma(\alpha)\ge 2$

若$\sigma(\alpha)=2$,显然等价于$a$为不可约数,取$\xi_{i}=\{\alpha\}$即可

若$\sigma(\alpha)<k$时$\alpha$存在分解,考虑$\sigma(\alpha)=k$时(其中$k\ge 3$):

  由于$k\ge 3$,显然$\alpha$不为不可约数,且由于$\alpha\ne o,\alpha\not\in \varepsilon$,则$\alpha=\beta\gamma$(其中$\beta,\gamma\not\in \varepsilon$且$\alpha\not\sim\beta,\gamma$)

  由于$\beta$的约数都是$\alpha$的约数,但$\alpha$不为$\beta$的约数,即$\sigma(\alpha)>\sigma(\beta)$,同理$\sigma(\alpha)>\sigma(\gamma)$

  根据归纳,即$\beta$和$\gamma$存在分解,将两者分解组合即可

同时,$\sigma(\alpha)$显然有限,即得证

命题1.1:不可约数为素数

命题1.2:$\forall \alpha,\beta\in \Z[i],\gcd(\alpha,\beta)$存在,且$\exists x,y\in \Z[i],x\alpha+ y\beta=\gcd(\alpha,\beta)$

命题1.3:$\forall \alpha\in \Z[i]$且$\alpha\ne o,\alpha\not\in\varepsilon$,$\alpha$的分解唯一(不考虑顺序,且若对应项相伴即相同)

定理1.13:命题1.2成立

若$\alpha=\beta=o$,取$\gcd(\alpha,\beta)=o,x=y=o$即可

若$\alpha=o$或$\beta=o$(不妨假设$\alpha=o$且$\beta\ne o$),取$\gcd(\alpha,\beta)=\beta,x=o,y=e$即可

若$\alpha,\beta\ne o$,记$d=\min_{x,y\in \mathbb{Z}[i],x\alpha+y\beta\ne o}x\alpha+y\beta$($\min$指取$N(d)$最小的,若有多个任取即可)

  设$d=x_{0}\alpha+y_{0}\beta$,取$\gcd(a,b)=d,x=x_{0},y=y_{0}$即可,证明如下——

  取$d'=x_{1}\alpha+y_{1}\beta$且$d'\ne o$,根据定理1.5有$\exists p,r\in \Z[i],d'=pd+r$且$N(r)\le \frac{N(d)}{2}$

  由于$r=(x_{1}-px_{0})\alpha+(y_{1}-py_{0})\beta$,若$r\ne o$与$N(d)$最小性矛盾,即$r=o$,也即$d\mid d'$

  取$x_{1}=1,y_{1}=0$和$x_{1}=0,y_{1}=1$时,则$d'=\alpha$和$\beta$,即有$d\mid\alpha,\beta$

  若$d'$为$\alpha$和$\beta$的公约数,显然$d'\mid d=x_{0}\alpha+y_{0}\beta$

定理1.14:命题1.1,命题1.2和命题1.3两两等价

证明参考《代数数论(第二版)》

由此,即命题1.1和命题1.3也成立

2.功能实现

最大公约数

前面已经说明代数系统$(\mathbb{Z}[i],+,\times)$是唯一分解整环,即最大公约数一定存在

进一步的,我们考虑$\alpha,\beta\in \mathbb{Z}[i]$,如何求$\gcd(\alpha,\beta)$

此时,我们通过辗转相除法计算,假设$\alpha=p\beta+r$(其中$N(r)\le \frac{N(\beta)}{2}$),显然$d\mid\alpha,\beta$和$d\mid \beta,r$是等价的(互相可以推导),因此$\gcd(\alpha,\beta)=\gcd(\beta,r)$,递归下去即可

结束条件为$\beta=o$,此时取$\gcd(\alpha,\beta)=\alpha$显然满足条件($o$整除任何数)

同时由于$N(r)\le \frac{N(\beta)}{2}$,时间复杂度为$o(\log N(\alpha)+N(\beta))$

定理2.1:$\forall \alpha,\beta\in \mathbb{Z}[i]$且$x,y\ne o$,$N(\gcd(\alpha,\beta))=\min_{x,y\in \mathbb{Z}[i],x\alpha+y\beta\ne o}N(x\alpha+y\beta)$

证明参考定理1.13的证明

素数判定

(由于是唯一分解整环,不可约数以下一律称为素数)

为了方便,以下称整数意义下的素数为质数,其中模4余3的质数称为$4k+3$质数,其余的称为非$4k+3$质数(显然只能为2或模4余1)

定理2.2:对于非$4k+3$质数$p$,$\exists x\in Z^{+},p\mid x^{2}+1$

若$p=2$,取$x=1$即可

若$p\equiv 1(mod\ 4)$,则$\prod_{i=1}^{\frac{p-1}{2}}(p-i)\equiv (-1)^{\frac{p-1}{2}}(\frac{p-1}{2}!)=(\frac{p-1}{2}!)(mod\ p)$

取$x=\frac{p-1}{2}!$,即有$x^{2}\equiv (p-1)!\equiv -1(mod\ p)$(威尔逊定理),也即$p\mid x^{2}+1$

考虑$\xi\in \Z[i]$,如何快速判定$\xi$是否是素数

定理2.3:$\xi$为素数当且仅当$N(\xi)$为非$4k+3$质数或$N(\xi)=p^{2}$(其中$p$为$4k+3$质数)

  • 充分性

若$\xi$不为素数,若$\xi=o,\xi\in\varepsilon$即$N(\xi)=0$或1,显然不为上述形式

否则,设$\xi=\alpha\beta$(其中$\alpha,\beta\notin \varepsilon$且$\xi\not\sim\alpha,\beta$),也即有$N(\alpha),N(\beta)\ne 1$且$N(\xi)=N(\alpha)N(\beta)$

若$N(\xi)$为(非$4k+3$)质数,那么$N(\alpha)$和$N(\beta)$中必然有一个1,矛盾

若$N(\xi)=p^{2}$(其中$p$为$4k+3$质数),由于$N(\alpha),N(\beta)\ne 1$,必然是$N(\alpha)=N(\beta)=p$

设$\alpha=a+bi$,则$N(\alpha)=a^{2}+b^{2}=p\equiv 3(mod\ 4)$,而$a^{2},b^{2}\equiv 0,1(mod\ 4)$,显然不存在

  • 必要性

设素数$\xi=a+bi$,则$(a+bi)(a-bi)=N(\xi)$,也即$\xi=a+bi\mid N(\xi)$

对$N(\xi)$质因数分解,记$N(\xi)=p_{1}p_{2}…p_{k}$(其中$p_{i}$为质数),根据$\xi$为素数即$\exists 1\le i\le k,\xi\mid p_{i}$

不妨假设$\xi\mid p=p_{i}$,即$N(\xi)\mid N(p)=p^{2}$,同时$p\mid N(\xi)$

若$N(\xi)=p$,上面已经说明$N(\xi)$不能为$4k+3$质数,即$N(\xi)$为非$4k+3$质数

若$N(\xi)=p^{2}$,假设$p$为非$4k+3$质数:

  根据定理2.2有$\exists x\in Z^{+},p\mid x^{2}+1=(x+i)(x-i)$

  显然$p\not\mid x\pm i$,即$p$不为素数,显然$\xi\sim p$也不为素数,矛盾

因此$p$为$4k+3$质数,即得证

分解

下面,考虑来分解一个$\alpha\in \Z[i]$且$\alpha\not\ne o,\alpha\not\in \varepsilon$——

先对$N(\alpha)$质因数分解,假设$N(\alpha)=\prod_{i=1}^{k}p_{i}^{a_{i}}$(其中$p_{i}$为质数,且$p_{i}$各不相同)

设分解为$\alpha=\prod_{i=1}^{s}\xi_{i}$,根据前面的素数判定,则$N(\xi_{i})$的形式是确定的——

1.$\forall 1\le i\le k$且$p_{i}$为非$4k+3$质数恰有$a_{i}$个$N(\xi)=p_{i}$

2.$\forall 1\le i\le k$且$p_{i}$为$4k+3$质数,恰有$\frac{a_{i}}{2}$个$N(\xi)=p_{i}^{2}$(这里$a_{i}$一定为偶数)

由此,$\forall 1\le i\le s,N(\xi_{i})$已经确定,不妨枚举所有$\xi$使得$N(\xi)=N(\xi_{i})$且$\xi\mid\alpha$,然后将其除掉,重复此过程即可得到最终的分解

暴力枚举时间复杂度为$o(\sqrt {N(\alpha)})$,并不足够优秀

但事实上,解的数量并不多,即有以下结论——

定理2.4:对于素数$\xi$,方程$a^{2}+b^{2}=N(\xi)$的整数解存在且唯一(不考虑顺序和符号下)

  • 存在性

若$N(\xi)=p^{2}$(其中$p$其$4k+3$质数),取$\xi=p$即可

若$N(\xi)=p$(其中$p$为非$4k+3$质数),设$p$在$\Z[i]$中分解为$\prod_{i=1}^{k}\xi_{i}$,则$p^{2}=\prod_{i=1}^{k}N(\xi_{i})$

由于$\xi_{i}$都是素数,则$N(\xi_{i})\neq 1,p^{2}$,那么必然是$k=2$且$N(\xi_{1})=N(\xi_{2})=p$

设$\xi_{1}=a+bi$,即$N(\xi_{1})=a^{2}+b^{2}=p$

  • 唯一性

若有两组解$(a,b)$和$(c,d)$,即$N(\xi)=a^{2}+b^{2}=c^{2}+d^{2}$(且$a,b,c,d\in Z$)

由于$a^{2}+b^{2}=(a+bi)(a-bi)$,即$a+bi\mid c^{2}+d^{2}=(c+di)(c-di)$

由于$N(a+bi)=N(\xi)$,显然$a+bi$在$(\Z[i],+,\times)$中为素数,即$a+bi\mid c+di$或$a+bi\mid c-di$

不妨假设$a+bi\mid c+di$,设$c+di=\epsilon(a+bi)$,由于$N(a+bi)=N(c+di)$,即$N(\epsilon)=1$,也即$\epsilon\in \varepsilon$,分类讨论即可得到$(a,b)$和$(c,d)$在不考虑顺序和符号下相同

由于$\xi=a+bi$是考虑顺序和符号的,也即至多只有8组,那么只需要找到一组解,即可$o(1)$枚举所有解

若$N(\xi)=p^{2}$(其中$p$为$4k+3$质数),取$\xi=p$即可

若$N(\xi)=p$(其中$p$为非$4k+3$质数),有以下结论——

定理2.5:若$p$为非$4k+3$质数,$z\in Z$满足$z^{2}\equiv -1(mod\ p)$,则$N(\gcd(p,z+i))=p$

根据定理2.4,有$\exists a,b,a^{2}+b^{2}=p$,即$a^{2}+b^{2}\equiv a^{2}-z^{2}b^{2}=(a-zb)(a+zb)\equiv 0(mod\ p)$

由于$p$为质数,即$p\mid a-zb$或$p\mid a+zb$

不妨假设$p\mid a-zb$,设$a-zb=kp$,即$a+bi=(kp+zb)+bi=kp+b(z+i)$

记$d=\gcd(p,z+i)$,显然$d\mid a+bi$,即$N(d)\mid N(a+bi)=p$

同时,由于$a+bi\mid (a+bi)(a-bi)=p$,即$a+bi\mid b(z+i)$

由于$N(a+bi)=p$,即$a+bi$为素数,显然$a+bi\not\mid b$,也即$a+bi\mid z+i$

由于$a+bi\mid p,z+i$,即$a+bi\mid d$,也即$N(a+bi)=p\mid N(d)$

综上,即$N(d)=p$

由此,取$\xi=\gcd(p,z+i)$即可

关于如何求$z$,对$p$分类讨论——

当$p=2$时,显然$z=1$即可

当$p\equiv 1(mod\ 4)$时,由于$(-1)^{\frac{p-1}{2}}\equiv 1(mod\ p)$,即$-1$是模$p$的二次剩余,那么$z$是存在的

关于$z$的具体求法,不断随机$1\le c<p$使得$c^{\frac{p-1}{2}}\equiv -1(mod\ p)$,那么取$z\equiv c^{\frac{p-1}{4}}(mod\ p)$即可

关于随机的复杂度,有以下结论——

定理2.6:在$1\le c<p$中,满足$c^{\frac{p-1}{2}}\equiv -1(mod\ p)$的$c$存在$\frac{p-1}{2}$个

根据费马小定理,有$c^{p-1}\equiv 1(mod\ p)$,即$c^{\frac{p-1}{2}}\equiv \pm1(mod\ p)$

根据欧拉准则,有$c$为模$p$的非二次剩余当且仅当$c^{\frac{p-1}{2}}\equiv -1(mod\ p)$

由于$x^{2}\equiv (p-x)^{2}(mod\ p)$,因此至多只有$\frac{p-1}{2}$个数为二次剩余,也即得证

因此,期望时间复杂度为$o(1)$

综上,这一部分复杂度为$o(\log^{2}N(\alpha))$(对每一个素因子,需要快速幂和求$\gcd$)

由于初始需要对$N(\alpha)$分解,使用Pollard-Rho算法,时间复杂度为$o(N(\alpha)^{\frac{1}{4}})$

1 #include
2 using namespace std;
3 #define ll long long
4 struct Num{
5 ll x,y;
6 Num(){
7 x=y=0;
8 }
9 Num(ll xx,ll yy){
10 x=xx,y=yy;
11 }
12 ll len(){
13 return x*x+y*y;
14 }
15 Num conj(){
16 return Num(x,-y);
17 }
18 Num operator - ()const{
19 return Num(-x,-y);
20 }
21 Num operator + (const Num &k)const{
22 return Num(x+k.x,y+k.y);
23 }
24 Num operator * (const Num &k)const{
25 return Num(x*k.x-y*k.y,x*k.y+y*k.x);
26 }
27 };
28 int p[5]={3,5,7,11,13};
29 vectorv;
30 vectorans;
31 ll mul(ll x,ll y,ll n){
32 return (__int128)x*y%n;
33 }
34 ll gcd(ll x,ll y){
35 if (!y)return x;
36 return gcd(y,x%y);
37 }
38 ll qpow(ll n,ll m,ll mod){
39 ll s=n,ans=1;
40 while (m){
41 if (m&1)ans=mul(ans,s,mod);
42 s=mul(s,s,mod);
43 m>>=1;
44 }
45 return ans;
46 }
47 ll get_min(ll x,ll y){
48 ll ans=(2*abs(x)/abs(y)+1)/2;
49 if ((x<0)^(y<0))ans=-ans; 50 return ans; 51 } 52 bool check(ll n){ 53 if (n==2)return 1; 54 if (n%2==0)return 0; 55 ll m=n-1,k=0; 56 while (m%2==0){ 57 k++; 58 m/=2; 59 } 60 for(int i=0;i<5;i++){ 61 if (n%p[i]==0)return n==p[i]; 62 ll s=qpow(p[i],m,n); 63 for(int j=0;j1)return 0;
68 }
69 return 1;
70 }
71 ll get_fac(ll n){
72 ll x=rand()%n,c=rand()%n,y=(mul(x,x,n)+c)%n,z=1,tot=0;
73 while (1){
74 if ((x==y)||(tot%100==0)){
75 if (gcd(z,n)>1)return gcd(z,n);
76 if (x==y)return 1;
77 z=1;
78 }
79 tot++;
80 z=mul(z,(x+n-y)%n,n);
81 if (!z)return gcd((x+n-y)%n,n);
82 x=(mul(x,x,n)+c)%n;
83 y=(mul(y,y,n)+c)%n;
84 y=(mul(y,y,n)+c)%n;
85 }
86 }
87 void decompose(ll n){
88 if (check(n)){
89 v.push_back(n);
90 return;
91 }
92 while (1){
93 ll p=get_fac(n);
94 if (p>1){
95 decompose(p);
96 decompose(n/p);
97 return;
98 }
99 }
100 }
101 pair divide(Num x,Num y){//若n较大,这里需要使用__int128
102 Num ans=y.conj()*x;
103 ans.x=get_min(ans.x,y.len());
104 ans.y=get_min(ans.y,y.len());
105 return make_pair(ans,x+(-ans*y));
106 }
107 Num gcd(Num x,Num y){
108 if (!y.len())return x;
109 return gcd(y,divide(x,y).second);
110 }
111 Num get_Num(ll k){
112 if (k==2)return Num(1,1);
113 while (1){
114 ll c=rand()%k;
115 if (qpow(c,(k-1)/2,k)==k-1){
116 ll z=qpow(c,(k-1)/4,k);
117 return gcd(Num(k,0),Num(z,1));
118 }
119 }
120 }
121 vector decompose(Num k){
122 v.clear();
123 decompose(k.len());
124 sort(v.begin(),v.end());
125 vectorans;
126 ans.clear();
127 for(int i=0,flag=0;io=divide(k,p);
139 if (o.second.len()){
140 p=p.conj();
141 o=divide(k,p);
142 }
143 k=o.first;
144 ans.push_back(p);
145 }
146 }
147 ans[0]=ans[0]*k;
148 return ans;
149 }
150 int main(){
151 srand(time(0));
152 }

3.题目

题面

记$f(x)=\sum_{\alpha\in \mathbb{Z}[i],N(\alpha)=x^{2}}1$,求$\sum_{i=1}^{N}f(i)^{K}$,答案对$P$取模

$1\le N,K\le 10^{11}$,$10^{8}\le P\le 10^{9}+7$

Subtask1:$N\le 8\times 10^{3}$

Subtask2:$K\ge 15$,$P$为2的幂次

Subtask3:$N\le 2\times 10^{7}$

Subtask4:$N\le 2\times 10^{8}$,$1\le K\le 2$

Subtask5:无特殊限制

Subtask1

关于$f(x)$,我们分别枚举$a$的实部和虚部,也即$\sum_{a,b\in Z,a^{2}+b^{2}=x^{2}}1$

显然$|a|,|b|\le x$,在$[-x,x]$中暴力枚举即可,复杂度为$o(N^{3})$

显然,只需要枚举$a$并判定$b$即可,因此不需要枚举$b$

时间复杂度为$o(N^{2})$,可以通过

Subtask2

定义$g(x)=\sum_{a,b\in Z^{+},a^{2}+b^{2}=x^{2}}1$,显然$f(x)=4g(x)+4$

由于$g(x)\in Z$,因此$4\mid f(x)$,即$2^{2K}\mid f(x)^{K}$,因此$f(x)^{K}\equiv 0(mod\ P)$,答案即为0

时间复杂度为$o(1)$,可以通过

Subtask3

定义3.1(勾股数):$(a,b,c)$,满足$a,b,c\in Z^{+}$且$a^{2}+b^{2}=c^{2}$

关于$g(x)$,即求形如$(a,b,x)$的勾股数对数

定理3.1:若$(a,b,c)$为勾股数,则$\gcd(a,b)=\gcd(a,c)=\gcd(b,c)$

定义3.2(原生勾股数):勾股数$(a,b,c)$,满足$\gcd(a,b)=1$

显然,每一对勾股数$(a,b,c)$都恰存在一对原生勾股数$(\frac{a}{d},\frac{b}{d},\frac{c}{d})$(其中$d=\gcd(a,b)$)

考虑一个整数二元组$(n,m)$,满足$n>m>0,n+m\equiv 1(mod\ 2)$且$\gcd(n,m)=1$,以此构造出以下两对勾股数:$(2nm,n^{2}-m^{2},n^{2}+m^{2})$和$(n^{2}-m^{2},2nm,n^{2}+m^{2})$

定理3.2:由此构造出的勾股数都是原生勾股数,且不重复

记$d=\gcd(2nm,n^{2}-m^{2})=\gcd(2nm,(n+m)(n-m))$,显然左边三项与右边两项两两互素,即$d=1$,也即为原生勾股数

由于$2nm$为偶数且$n^{2}-m^{2}$为奇数,显然两类之间显然不会重复

若$(n_{1},m_{1})$和$(n_{2},m_{2})$所产生的相同,由于是同一类,显然两数的平方和和平方差相同,即两数相同

定理3.3:每一对原生勾股数$(a,b,c)$,都存在一组$(n,m)$构造得到

若$a$和$b$同为偶数,即$\gcd(a,b)\ge 2$,矛盾

若$a$和$b$同为奇数,即$c^{2}\equiv a^{2}+b^{2}\equiv 2(mod\ 4)$,矛盾

不妨假设$a$为偶数且$b$为奇数,即$c^{2}\equiv a^{2}+b^{2}\equiv 1(mod\ 4)$,显然$c$为奇数

设$a=2k$,即$c^{2}-b^{2}=(c-b)(c+b)=4k^{2}$,也即$\frac{c-b}{2}\frac{c+b}{2}=k^{2}$,显然$\frac{c-b}{2},\frac{c+b}{2}\in Z$

记$x=\frac{c-b}{2},y=\frac{c+b}{2},d=\gcd(x,y)$,即$d\mid b=y-x,c=x+y$,也即$\gcd(a,b)=\gcd(b,c)\ge d$,显然$d=1$,即$x$和$y$互素

由于$xy=k^{2}$,即$x$和$y$都为完全平方数,显然取$m=\sqrt{x},n=\sqrt{y}$即可

综上,我们只需要枚举$(n,m)$来得到所有原生勾股数,并再枚举$d$得到所有勾股数

由于$n^{2}+m^{2}=c\le N$,因此$n$和$m$的范围都是$o(\sqrt{N})$的,这一部分复杂度为$o(N)$

关于$d$的枚举,总复杂度恰为勾股数的对数,也即$\sum_{i=1}^{N}g(i)$,约为$10^{8}$

最后,再$o(N\log K)$求出$\sum_{i=1}^{N}(4g(i)+4)^{K}$即可

时间复杂度为$o(\sum_{i=1}^{N}g(i)+N\log K)$,可以通过

Subtask4

考虑从$(\mathbb{Z}[i],+,\times)$的角度来求$f(x)$,问题即求$N(\alpha)=x^{2}$的数字个数

记$g(x)$为满足$N(\alpha)=x^{2}$的$\alpha$的个数(相伴视作相同),显然其中每一个数都可以乘上$\varepsilon$中的数得到4个结果,即$f(x)=4g(x)$,也即$\sum_{i=1}^{N}f(i)^{K}=4^{K}\sum_{i=1}^{n}g(i)^{K}$,不妨仅考虑$\sum_{i=1}^{n}g(i)^{K}$

由于$N(\alpha)$是确定的,$\alpha$的分解$\xi_{1},\xi_{2},…,\xi_{k}$中$N(\xi_{i})$的形式是确定的

显然对于$\alpha,\beta\in \Z[i]$满足$N(\alpha)=N(\beta)=x^{2}$,$\alpha$和$\beta$相伴当且仅当两者的分解相同(不考虑顺序,且若对应项相伴即相同)

换言之,统计$g(x)$可以改为统计有多少种分解方式,且由于$N(\xi_{i})$的形式是确定的,只需要分别统计每一项的方案数即可

根据定理2.4,若$N(\xi_{i})=a^{2}+b^{2}$,解$\xi=\pm a\pm bi$或$\pm b\pm ai$

若$p_{i}=2$或$p_{i}$为$4k+3$质数,先仍然这些解都相伴,因此没有贡献

当$p_{i}\equiv 1(mod\ 4)$时,恰有两种解(不相伴),且由于仅关心与两种解的个数,显然为$a_{i}+1$种

综上,记$x$的质因数分解的结果为$\prod_{i=1}^{k}p_{i}^{a_{i}}$,则$g(x)=\prod_{1\le i\le k,p_{i}\equiv 1(mod\ 4)}(2a_{i}+1)$

预处理$o(N)$筛出每一个数的最小素因子,即可$o(\log x)$求出$x$质因数分解的结果,也即可求出$g(x)$

由于每一个$g(x)$都是独立计算的,且$K$只有两种,通过分块打表优化即可

最后,再$o(N)$求和即可($1\le K\le 2$)

时间复杂度为$o(N+\alpha \log N)$(其中$\alpha$为打表的间隔,取$4\times 10^{5}$即可)

Subtask5

根据$g(x)$的式子,不难得到$g(x)$是积性函数,那么显然$h(x)=g(x)^{K}$也是积性函数

问题即求$h(x)$这个积性函数的前缀和,下面考虑用类似Min25筛的做法——

记素数从小到大依次为$p_{1},p_{2},…$,$\pi_{n}$表示不超过$n$的素数个数,$\min_{n}$为$n$最小的素因子

定义$S=\{i\mid i\le \sqrt{N}\or i=\lfloor\frac{N}{x}\rfloor\}$,$S_{1}(n)=\sum_{p_{i}\le n}h(p_{i})$,$S_{2}(n,m)=\sum_{2\le i\le n,p_{m}<\min_{i}}h(i)$

问题即求$1+S_{2}(N,0)$,有如下转移——
$$
S_{2}(n,m)=\sum_{p_{m}<p_{i}\le \sqrt{n},e\ge 1,p_{i}^{e}\le n}h(p_{i}^{e})(1+S_{2}(\lfloor\frac{n}{p_{i}^{e}}\rfloor,i))+(S_{1}(n)-S_{1}(\max(p_{m},\sqrt{n})))
$$
考虑递归计算$S_{2}(N,0)$,在$\sqrt{n}<p_{m}$时,前者即为0,直接返回后者即可,因此需要继续递归的状态$(n,m)$都满足$n\in S$且$m\le \pi_{\sqrt{n}}$

接下来,考虑$\forall n\in S$预处理出$S_{1}(n)$,即$\sum_{1\le i\le n,i为素数,i\equiv 1(mod\ 4)}1$

定义$S_{r}(n,m)=\sum_{2\le i\le n,i为素数或p_{m}<\min_{i},i\equiv r(mod\ 4)}1$(其中$r\in \{1,3\}$),注意到若$i$不为素数,总有小于等于$\sqrt{N}$的素因子,因此有$S_{1}(n)=3^{K}S_{1}(n,\pi_{\sqrt{n}})+(S_{3}(n,\pi_{\sqrt{n}})+[n\ge 2])$

初始即$S_{r}(n,0)=\begin{cases}\lfloor\frac{n-1}{4}\rfloor&(r=1)\\\lfloor\frac{n+1}{4}\rfloor&(r=3)\end{cases}$,转移考虑从$S_{r}(n,m-1)$转移到$S_{r}(n,m)$,即要删去$\min_{i}=p_{m}$的部分,考虑对$p_{m}$分类讨论——

1.$p_{m}=2$,若$\min_{i}=2$显然$i\not\equiv r(mod\ 4)$,即$S_{r}(n,m)=S_{r}(n,m-1)$

2.$p_{m}\equiv 1(mod\ 4)$,则$S_{r}(n,m)=S_{r}(n,m-1)-(S_{r}(\lfloor\frac{n}{p_{m}}\rfloor,m-1)-S_{r}(p_{m}-1,m-1))$

3.$p_{m}\equiv 3(mod\ 4)$,则$S_{r}(n,m)=S_{r}(n,m-1)-(S_{r\oplus 2}(\lfloor\frac{n}{p_{m}}\rfloor,m-1)-S_{r\oplus 2}(p_{m}-1,m-1))$

关于这两个转移,考虑将$\min_{i}=p_{m}$的$i$除以$p_{m}$,此时范围即$\lfloor\frac{n}{p_{m}}\rfloor$,但根据定义,$S_{r}(\lfloor\frac{n}{p_{m}}\rfloor,m-1)$中还包含素数,后者即去掉这一部分

关于模4的余数,显然乘1后不变、乘3后恰好改变,即该式子

时间复杂度为$o(\frac{N^{\frac{3}{4}}}{\log N})$,可以通过

1 #include
2 using namespace std;
3 #define N 1000005
4 #define ll long long
5 int K,mod,vis[N],P[N],mi[N],h[2][N<<1],H[N<<1]; 6 ll n,k; 7 int qpow(int n,ll m){ 8 int s=n,ans=1; 9 while (m){ 10 if (m&1)ans=1LL*ans*s%mod; 11 s=1LL*s*s%mod; 12 m>>=1;
13 }
14 return ans;
15 }
16 int id(ll k){
17 if (k<=K)return k; 18 return 2*K+1-n/k; 19 } 20 ll get(int k){ 21 if (k<=K)return k; 22 return n/(2*K+1-k); 23 } 24 ll sqr(int k){ 25 return 1LL*k*k; 26 } 27 int dfs(ll n,int m){ 28 if (m){ 29 if (n=2))%mod;
64 printf("%lld",1LL*mi[4]*(1+dfs(n,0))%mod);
65 }

拓展

定义$f'(x)=\sum_{a\in \mathbb{Z}[i],N(a)=x}1$,考虑如何求$f'(x)$,类似地有以下结论——

将$x$质因数分解,设为$\prod_{i=1}^{k}p_{i}^{a_{i}}$,若$\exists 1\le i\le k,p_{i}\equiv 3(mod\ 4)$且$a_{i}\equiv 1(mod\ 2)$,则答案为0,否则答案与之前相同,即$f'(x)=4\prod_{1\le i\le k,p_{i}\equiv 1(mod\ 4)}(a_{i}+1)$

构造$\chi(x)=\begin{cases}1&x\equiv 1(mod\ 4)\\-1&x\equiv -1(mod\ 4)\\0&x\equiv 0(mod\ 2)\end{cases}$,每一个$p_{i}^{a_{i}}$对答案的贡献,都可以表示为$\sum_{j=0}^{a_{i}}\chi(p_{i}^{j})$(具体验证可分类讨论,这里就省略了)

换言之,即$f'(x)=4\prod_{i=1}^{k}\sum_{j=1}^{a_{i}}\chi(p_{i}^{j})$

考虑$\chi(x)$,不难证明其为(完全)积性函数,将后者展开,即有$f'(x)=4\sum_{d\mid x}\chi(d)$

(另外,当$x=0$时其不满足此式子,此时显然$f'(x)=1$)

考虑这样一个问题:求以$(0,0)$为圆心、$R$为半径的圆内整点数($R\in Z^{+}$)

显然,答案即$\sum_{i=0}^{R^{2}}f'(i)=1+4\sum_{i=1}^{R^{2}}\sum_{j\mid i}\chi(j)=1+4\sum_{i=1}^{R^{2}}\lfloor\frac{R^{2}}{i}\rfloor\chi(i)$

另一方面,每一个整点可以看作“几乎”对应于一个$1\times 1$的小方格,因此可以认为整点数与圆的面积接近,即得到式子$\pi R^{2}\approx 1+4\sum_{i=1}^{R^{2}}\lfloor\frac{R^{2}}{i}\rfloor\chi(i)$

再进一步的估计,即有$\pi\approx 4\sum_{i=1}^{R^{2}}\frac{\chi(i)}{i}=4(1-\frac{1}{3}+\frac{1}{5}-\frac{1}{7}+\frac{1}{9}…)$

(虽然之前的描述并不严谨,但事实上这是正确的)