[BZOJ1041]圆上的整点

嗯...

自己看视频讲解?

>Click Here<

 

 1 #include<cstdio>
 2 #include<queue>
 3 #include<iostream>
 4 #include<cstring>
 5 #define int long long
 6 using namespace std;
 7 inline int read(){
 8     int ans=0,f=1;char chr=getchar();
 9     while(!isdigit(chr)){if(chr=='-') f=-1;chr=getchar();}
10     while(isdigit(chr)){ans=(ans<<3)+(ans<<1)+chr-48;chr=getchar();}
11     return ans*f;
12 }int ans=1,n,r;
13 signed main() {
14     r=n=read();
15     if(!n) {puts("1");return 0;}
16     while(n&1^1) n>>=1;
17     for(int i=3,j;i*i<=r;++i) {
18         for(j=0;!(n%i);++j) n/=i;
19         if(i%4==1) ans*=j<<1|1;
20     }if(n>1&&n%4==1) ans*=3;
21     cout<<ans*4;
22     return 0;
23 }

 

posted @ 2019-03-13 21:05  zheng_liwen  阅读(110)  评论(0编辑  收藏  举报
/*去广告*/