记录编号 |
360188 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[HZOI 2016]艾米利亚的求助 |
最终得分 |
100 |
用户昵称 |
Go灬Fire |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.916 s |
提交时间 |
2016-12-27 18:37:05 |
内存使用 |
0.31 MiB |
显示代码纯文本
#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn=1010;
#define LL unsigned long long
#define Inf 2e9
LL Phi(LL x){
LL ans=x;
for(LL i=2;i*i<=x;i++){
if(x%i==0){
ans=ans/i*(i-1);
while(x%i==0)x/=i;
}
}
if(x>1)ans=ans/x*(x-1);
return ans;
}
LL F(LL x){
if(x==1)return 0;
LL ans=1;
for(LL i=2;i*i<=x;i++){
if(x%i==0){
LL num=0;
while(x%i==0)x/=i,num++;
ans*=(num+1);
}
}
if(x>1)ans*=2;
return ans;
}
void Init();
int main(){
freopen("aimiliyadehelp.in","r",stdin);freopen("aimiliyadehelp.out","w",stdout);
Init();
getchar();getchar();
return 0;
}
void Init(){
LL n;scanf("%llu",&n);
LL ans=0;
for(LL i=1;i*i<=n;i++){
if(n%i==0){
ans+=Phi(n/i)*F(i);
if(i*i!=n)ans+=Phi(i)*F(n/i);
}
}
printf("%llu\n",ans);
}