ZOJ 3326 An Awful Problem 模拟
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3751
题意:给出一对年月日,计算月是素数并且日是素数的个数;
模拟题,自己把自己绕晕了好几次 以后做题要多思考,理清思路
代码:
#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<cmath> using namespace std; bool month(int m) { if(m==2||m==3||m==5||m==7||m==11) return 1; return 0; } bool day(int t) { if(t==2||t==3||t==5||t==7||t==11||t==13||t==17 ||t==19||t==23||t==29||t==31) return 1; return 0; } bool Ly(int x) { if(x%400==0||(x%100!=0&&x%4==0)) return 1; return 0; } int main() { int CASE,SUM; int i,a,b,c,a1,b1,c1; int L_y=53,N_y=52;//11 10 9 scanf("%d",&CASE); while(CASE--) { SUM=0; scanf("%d%d%d%d%d%d",&a,&b,&c,&a1,&b1,&c1); if(a==a1) { if(b==b1&&month(b)) { for(i=c;i<=c1;i++) { if(day(i))SUM++; } } if(b<b1) { for(i=b;i<b1;i++) { if(month(i)) { if(i==2) { if(Ly(a))SUM+=10;//瑞年二月 else SUM+=9; } else if(i==11)SUM+=10; else SUM+=11; } } if(month(b)) for(i=2;i<c;i++) { if(day(i))SUM--; } if(month(b1)) for(i=2;i<=c1;i++) { if(day(i))SUM++; } } } if(a<a1) { for(i=a+1;i<a1;i++) { if(Ly(i)) SUM+=L_y; else SUM+=N_y; } for(i=b;i<=11;i++) { if(month(i)) { if(i==2) { if(Ly(a))SUM+=10;//瑞年二月 else SUM+=9; } else if(i==11)SUM+=10; else SUM+=11; } } if(month(b))//减去天 for(i=1;i<c;i++) { if(day(i)) SUM--; } for(i=2;i<b1;i++) { if(month(i)) { if(i==2) { if(Ly(a1))SUM+=10;//瑞年二月 else SUM+=9; } else if(i==11)SUM+=10; else SUM+=11; } } if(month(b1)) for(i=2;i<=c1;i++) { if(day(i))SUM++; } } printf("%d\n",SUM); } return 0; }