poj 3090 && poj 2478(法雷级数,欧拉函数)
来源:互联网 发布:编程语言工资排行 编辑:程序博客网 时间:2024/05/01 22:35
http://poj.org/problem?id=3090
法雷级数
法雷级数的递推公式很简单:f[1] = 2; f[i] = f[i-1]+phi[i]。
该题是法雷级数的变形吧,答案是2*f[i]-1。
#include <stdio.h>#include <iostream>#include <map>#include <set>#include <stack>#include <vector>#include <math.h>#include <string.h>#include <queue>#include <string>#include <stdlib.h>#include <algorithm>#define LL long long#define _LL __int64#define eps 1e-12#define PI acos(-1.0)using namespace std;const int maxn = 1100;int flag[maxn];int prime[maxn];int phi[maxn];LL f[maxn];void init(){memset(flag,0,sizeof(flag));prime[0] = 0;phi[1] = 1;for(int i = 2; i < maxn; i++){if(flag[i] == 0){phi[i] = i-1;prime[++prime[0]] = i;}for(int j = 1; j <= prime[0]&&prime[j]*i<maxn; j++){flag[prime[j]*i] = 1;if(i % prime[j] == 0)phi[prime[j]*i] = phi[i] * prime[j];elsephi[prime[j]*i] = phi[i] * (prime[j] - 1);}}f[1] = 2;for(int i = 2; i <= 1000; i++)f[i] = f[i-1] + phi[i];}int main(){init();int test;scanf("%d",&test);for(int item = 1; item <= test; item++){int x;scanf("%d",&x);printf("%d %d %lld\n",item,x,f[x]*2-1);}return 0;}
http://poj.org/problem?id=2478
更简单了,直接求法雷级数。基于素数筛的欧拉函数。
#include <stdio.h>#include <iostream>#include <map>#include <set>#include <stack>#include <vector>#include <math.h>#include <string.h>#include <queue>#include <string>#include <stdlib.h>#include <algorithm>#define LL long long#define _LL __int64#define eps 1e-12#define PI acos(-1.0)using namespace std;const int maxn = 1000010;int flag[maxn];int prime[maxn];int phi[maxn];LL f[maxn];void init(){memset(flag,0,sizeof(flag));prime[0] = 0;phi[1] = 1;for(int i = 2; i < maxn; i++){if(flag[i] == 0){phi[i] = i-1;prime[++prime[0]] = i;}for(int j = 1; j <= prime[0]&&prime[j]*i<maxn; j++){flag[prime[j]*i] = 1;if(i % prime[j] == 0)phi[prime[j]*i] = phi[i] * prime[j];elsephi[prime[j]*i] = phi[i] * (prime[j] - 1);}}f[1] = 2;for(int i = 2; i <= 1000010; i++)f[i] = f[i-1] + phi[i];}int main(){init();int n;while(~scanf("%d",&n)&&n){printf("%lld\n",f[n]-2);}return 0;}
0 0
- poj 3090 && poj 2478(法雷级数,欧拉函数)
- POJ 2478 Farey Sequence(法雷级数+欧拉函数递推)
- 法雷级数(POJ-3090和POJ-2478)
- poj 3090(法雷级数。。。)
- POJ 2478 法雷级数
- uva 10820 poj 2407 poj 1284 poj 2478 poj 3090 (欧拉函数入门)
- 欧拉函数:poj 2407, poj 1284,poj 2478,poj 3090,poj 3696,poj 3358
- POJ 2478 Farey Sequence 快速求欧拉函数/法雷级数
- poj 3090 (欧拉函数应用)
- POJ-2478(欧拉函数)
- poj 2478 (欧拉函数)
- poj 3090 欧拉函数
- POJ 3090 欧拉函数
- POJ - 2478 欧拉函数..
- poj 2478 欧拉函数
- poj 2478 欧拉函数
- POJ-2478 欧拉函数
- 欧拉函数学习笔记整理 POJ 2407+POJ 1284+POJ 2478+POJ 3090
- URAL 1742 Team building
- Linux下DOS攻击探测
- Android之高仿手机QQ聊天
- 2014 Multi-University Training Contest 2--by 镇海中学 解题报告
- 309 BOBSLEDDING
- poj 3090 && poj 2478(法雷级数,欧拉函数)
- 正则表达式基础知识
- DateTime.ToString("yyyy/MM/dd")变成"2011-06-14"的解决方法
- 打算到噶尽快落实到噶尽快落实到噶
- TFS安装使用笔记——TFS非域单服务器配置外网访问
- 312 20岁生日
- 线段树的题目
- 314 斐波那契数列四吧
- C + +用户的杂志