推荐一篇文章:题解 P2508 【[HAOI2008]圆上的整点】 - emptyset - 洛谷博客。这里只放代码。
#include<bits/stdc++.h>
using namespace std;
namespace _
{
#define ms(a) memset(a,0,sizeof(a))
typedef long long ll;
ll n,ans=1;
ll func(ll x)
{
if(x%4==1) return 1;
if(x%4==3) return -1;
return 0;
}
void main()
{
scanf("%lld",&n);
for(ll i=2;i*i<=n;i++)
{
if(n%i) continue;
ll cnt=0;
while(n%i==0) n/=i,cnt++;
if(func(i)==1) ans*=(2*cnt+1);
}
if(n>1&&func(n)==1) ans*=3;
printf("%lld\n",ans*4);
return;
}
}
int main()
{
_::main();
return 0;
}
本文作者:Yurchiu
本文链接:https://yz-hs.github.io/756e5a240d96/
版权声明:本博客中所有原创文章除特别声明外,均允许规范转载,转载请注明出处。所有非原创文章,按照原作者要求转载。