摘要:继续练习了洛谷的循环 今天上午第一次翘了课,宅在宿舍code(莫名有些愧疚感怎么回事? 第一个难住我的便是阶乘的高精度了,插个眼,往后来重做。
第二个值得留意的细节便是,浮点数只能和浮点运算,比如double s=1.0/int n。 然后就是p1217,回文质数的数据太大,让我除了开始考虑代码的正确性之外,还得考虑空间的压力,需要学习多种算法才能解决问题。
tag一波,除了质数的判断,就是回文数的判断
#质数
int zhishu(int a) { int k = 0; for (int i = 2; i < a; i++) { if (a % i == 0) k++; } if (k == 0) return 1; else return 0; }
#(12.3完善一波)
1 int zhishu(int x){ 2 int p=0; if(x>=4){ 3 for(int i=2;i<x-1;i++){ 4 if(x%i==0) p++; 5 } 6 } 7 if(p==0&&x!=1) return 1; 8 else return 0; 9 }
#质数运用———哥德巴赫
#include <iostream> using namespace std; int zhishu(int a) { int k = 0; for (int i = 2; i < a; i++) { if (a % i == 0) k++; } if (k == 0) return 1; else return 0; } int main() { int n; cin>>n; int p = 0; while(n--) { cin>>p; int i, count = 0; for (i = 3; i <= p / 2; i += 2) { if (zhishu(i) && (zhishu(p - i))) count++; } cout << count << endl; } }
美妙的地方在于i+=2;
让运算时间直接减少一半,这样就可以达到时间限制
#回文
int huiwen(int n){ int sum=0; int m=n; while(n){ sum=sum*10+n%10; n/=10; } if(sum==m) return 1; else return 0; }
爱了,全自己发明。 马上就半期了,但code不能松懈。