Uva 10820

来源:互联网 发布:你曾是少年 知乎 编辑:程序博客网 时间:2024/06/06 09:00

比较简单的一道题目,思路和紫书一致,求出欧拉函数的值,求和乘2加1即可,具体实现见如下代码:

#include<iostream>#include<vector>#include<string>#include<set>#include<stack>#include<queue>#include<map>#include<algorithm>#include<cmath>#include<iomanip>#include<cstring>#include<sstream>#include<cstdio>#include<deque>#include<functional>using namespace std;int N;int f[50010];void Init(){memset(f, 0, sizeof(f));f[1] = 1;for (int i = 2; i <= 50000; i++){if (!f[i]){for (int j = i; j <= 50000; j += i){if (!f[j]) f[j] = j;f[j] = f[j] / i*(i-1);}}}}int main(){Init();while (cin >> N&&N){int res = 0;for (int i = 2; i <= N; i++) res += f[i];res = res * 2 + 1;cout << res << endl;}return 0;}

原创粉丝点击