题解 P2303 【[SDOi2012]Longge的问题】
化一化式子
也就是
考虑把
令
考虑
稍微思考一下可以知道答案是
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
long long ans=1,n;
int main()
{
scanf("%lld",&n);long long nn=n;//解决分数的问题,从外面的n里抽出一个pi给内部
for(long long i=2;i*i<=n;i++)
{
if(n%i==0)
{
nn/=i;int t=0;
while(n%i==0)++t,n/=i;
ans=ans*(t*(i-1)+i);
}
}
if(n!=1)nn/=n,ans=ans*(2*n-1);
cout<<ans*nn<<endl;
}
如果把