@MLEAutoMaton
2019-04-19T09:34:08.000000Z
字数 989
阅读 614
数学 BZOJ
神仙题,本题的思路来源于视频看了之后不会被教练抓...
设某一个数为.
若可以分解为一对形如(),()的共轭数对,那么称为高斯整数
那么显然对于某一个点保证.emmm,意味着这个点是一个符合答案的点.
考虑把分解一下,分解成两个复数的乘,那么两边显然是他的约数,相当于点?
所以分解质因数然后组合就可以了.
这样就没有了.
吗?
如果是一个不能够分解成两个共轭数对的数怎么办呢?的质数.
如果出现次数为偶数就平均分,否则就是0.
这下就没了.
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>#include<iostream>#include<queue>#include<algorithm>#include<map>#include<set>using namespace std;#define ll long long#define re register#define file(a) freopen(a".in",,"r",stdin);freopen(a".out","w",stdout)inline int gi(){int f=1,sum=0;char ch=getchar();while(ch>'9' || ch<'0'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0' && ch<='9'){sum=sum*10+ch-'0';ch=getchar();}return f*sum;}int n;int main(){n=gi();ll ans=1;if(n==0)return puts("1"),0;for(int i=2;i*i<=n;i++)if(n%i==0){int ps=0;while(n%i==0)n/=i,ps++;if(i%4==1)ans=1ll*ans*(2*ps+1);}if(n>1)if(n%4==1)ans=ans*3ll;printf("%lld\n",1ll*ans*4);return 0;}