题意:初始第一步给你两个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));
}

本文探讨了一道数学题目,该题目通过欧拉函数求解特定数值出现的次数。介绍了如何利用欧拉函数的特性来简化计算过程,并给出了完整的AC代码实现。
365

被折叠的 条评论
为什么被折叠?



