HDU 5597 GTW likes function 欧拉函数
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=5597
题意:
http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=658&pid=1003
题解:
f0(1)=2; f0(2)=3; f0(3)=4;
f1(1)=3; f1(2)=4; f1(3)=5;
f2(1)=4; ......
所以归纳出:fn(x)=n+x+1; orz
然后求euler(n+x+1).
代码:
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 typedef long long LL; 6 7 LL euler_phi(LL x) { 8 LL ret = x; 9 for (LL i = 2; i*i <= x; i++) { 10 if (x%i == 0) { 11 ret = ret / i*(i - 1); 12 while (x%i == 0) x /= i; 13 } 14 } 15 if (x > 1) ret = ret / x*(x - 1); 16 return ret; 17 } 18 19 int main() { 20 LL n, x; 21 while (scanf("%lld%lld", &n, &x) == 2 && n) { 22 printf("%lld\n", euler_phi(n + x + 1)); 23 } 24 return 0; 25 }