您的位置:首页 > 其它

Gym - 101727D Interview Task [欧拉函数]

2018-02-17 18:24 295 查看
题意:初始第一步给你两个1,然后一直在相邻两数之间插一个两数之和,问第n步的时候数值等于n的数有多少个。

题解:打表发现是欧拉函数= =,1的时候要特判。

AC代码:

#include<stdio.h>
#include<math.h>
typedef long long ll;
ll GetPhi(ll n)
{
ll m=sqrt(n+0.5);
ll ans=n;
for(ll i=2;i<=m;i++)
if(n%i==0)
{
ans=ans/i*(i-1);
while(n%i==0)n/=i;
}
if(n>1)ans=ans/n*(n-1);
return ans;
}
int main()
{
ll n;
scanf("%lld",&n);
if(n==1)printf("2\n");
else printf("%lld\n",GetPhi(n));
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: