POJ 1284 原根
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using namespace std; int Euler(int n) { int res=n; for(int i=2;i*i<=n;i++) { while(n%i==0) { n/=i; res-=(res/i); while(n%i==0) n/=i; } } if(n>1) res-=(res/n); return res; } int main() { int p; while(~scanf("%d",&p)) printf("%d\n",Euler(p-1)); return 0; }
POJ 2478 欧拉打表(不打表会TLE)
#include<iostream> #include<cstdio> #include<cstring> using namespace std; typedef long long ll; #define N 1000000 int e[N+5]; void init() { int i,j; memset(e,0,sizeof(e)); for(i=2;i<=N;i++) { if(!e[i]) { for(j=i;j<=N;j+=i) { if(!e[j]) e[j]=j; e[j]=e[j]/i*(i-1); } } } } int main() { int n; init(); while(scanf("%d",&n)&&n) { ll res=0; for(int i=2;i<=n;i++) res+=e[i]; printf("%I64d\n",res); } return 0; }
谜之POJ 3358
看不懂题目,看不懂别人的解题报告。。。好像很厉害的详解
时间: 2024-10-25 20:32:24