SGU 102 虽然代码比较多,不过还是挺高效的~
2012-03-17 18:34
423 查看
#include<iostream> #include<vector> #include<algorithm> #include<cstdio> #include<queue> #include<stack> #include<string> #include<map> #include<set> #include<cmath> #include<cassert> #include<cstring> #include<iomanip> using namespace std; #ifdef _WIN32 #define i64 __int64 #define out64 "%I64d\n" #define in64 "%I64d" #else #define i64 long long #define out64 "%lld\n" #define in64 "%lld" #endif #define FOR(i,a,b) for( int i = (a) ; i <= (b) ; i ++) #define FF(i,a) for( int i = 0 ; i < (a) ; i ++) #define FFD(i,a) for( int i = (a)-1 ; i >= 0 ; i --) #define S64(a) scanf(in64,&a) #define SS(a) scanf("%d",&a) #define LL(a) ((a)<<1) #define RR(a) (((a)<<1)+1) #define SZ(a) ((int)a.size()) #define PP(n,m,a) puts("---");FF(i,n){FF(j,m)cout << a[i][j] << ' ';puts("");} #define pb push_back #define CL(Q) while(!Q.empty())Q.pop() #define MM(name,what) memset(name,what,sizeof(name)) #define read freopen("in.txt","r",stdin) #define write freopen("out.txt","w",stdout) const int inf = 0x3f3f3f3f; const i64 inf64 = 0x3f3f3f3f3f3f3f3fLL; const double oo = 10e9; const double eps = 10e-10; const double pi = acos(-1.0); const int maxn = 10011; int gcd(int a, int b) { if (!a || !b) { return max(a, b); } int t; while (t = a % b) { a = b; b = t; } return b; }; bool notp[maxn]; vector<int>v; vector<int>p; bool a[maxn]; int n; bool isp(int x) { int tx = sqrt(x); for(int i=0;i<p.size();i++) { if(x%p[i]==0) { return false; } else if(p[i] > tx) { return true; } } return true; } bool yes(int x) { if(a[x] == true) { return false; } for(int i=0;i<v.size();i++) { if(v[i] <= x) { if( x%v[i] == 0) { return false; } } else { return true; } } return true; } int main() { p.clear(); MM(notp,false); notp[1]=true; notp[2]=false; p.pb(2); for(int i=3;i<maxn;i++) { if(isp(i)) { notp[i] = false; p.push_back(i); } else { notp[i] = true; } } int temp; while(SS(n)!=EOF) { if(n==1) { printf("1\n"); continue; } if(!notp ) { printf("%d\n",n-1); continue; } else { v.clear(); MM(a,false); temp = n; for(int i=0;i<p.size();i++) { if(p[i] <= temp) { if(temp % p[i] == 0) { v.push_back(p[i]); a[p[i]]=true; temp/=p[i]; } } else { break; } } /* for(int i=0;i<v.size();i++) { cout<<v[i]<<" "; } cout<<endl; */ int ans = 0; for(int i=1;i<=n-1;i++) { if(yes(i)) { ans++; } } printf("%d\n",ans); } } return 0; }
相关文章推荐
- 代码比较乱 不过还是好用的 DLL注入
- 这个批量发邮件服务还是比较给力的,不过太烦了,
- tabhost先简单记一下,以后再改(即使一样的,还是自己写的代码比较亲)
- 公历转农历模块,虽然是js文件,不过还是提供了实现方法,感谢提供者。
- 虽然很简单 不过改错还是很纠结滴
- JS下高效拼装字符串的几种方法比较与测试代码
- cpu gpu做矩阵乘法效率比对,虽然如此,但是对需要自己做的算法是否能如此高效的提高还是未知
- 虽然发生了这种事情,不过我还是挺你!
- 补:LCYZ NOIP模拟赛T3代码 : 倍增LCA || LCT动态树[虽然NOIP知识但还是五星QAQ]
- 这种方法在受到.NET版本和访问注册表权限时,是最佳解决方案,虽然代码看起来很多,不过下面的类直接拿走用就可以了。
- HDU--杭电--1242--Rescue--广搜--又是一个所谓的优先队列起作用的题,擦,虽然比上一个容易,不过还是拿来摆摆
- JS下高效拼装字符串的几种方法比较与测试代码
- 系统的时间调不错,就是界面躁动太多,要是允许话还是在自己的界面中加入比较薄, 不过这个很方便。
- 牵扯较多属性和方法的类题目,很简单的题目本来不想发的,如果有同学学到这个题目感觉太长不愿敲代码,copy走我的即可~不过还是建议自己打一打
- 牵扯较多属性和方法的类题目,很简单的题目本来不想发的,如果有同学学到这个题目感觉太长不愿敲代码,copy走我的即可~不过还是建议自己打一打
- 虽然这还是一个测试阶段的BOLG,不过还是在这写了。。。
- 今天第一次在杭电做题,虽然做的题比较简单,出错也依旧多,花费了很长时间,不过很开心,还学到一些知识,继续努力
- FTPrep, 116 Populating Next Right Pointers in Each Node, TODO,再多code几遍,虽然总结写得还比较ok,但是还是手感不熟
- VKCUP 2012 B Taxi 个人认为一道比较好的题目(虽然已经被否决),还是来发下代码吧