1 solutions
-
0
C++ :
#include <stdio.h> int prime(int n) { if(n == 2) return 1; else if(n < 2) return 0; for(int i = 2 ; i * i <= n ; i ++) if(n % i == 0) return 0; return 1; } int Leap(int n) { if((n % 4 == 0 && n % 100 != 0) || n % 400 == 0) return 1; return 0; } int monthday(int n,int m) { if(n == 2) { if(Leap(m)) return 29; else return 28; } if(n <= 7) { if(n % 2 == 1) return 31; else return 30; } else { if(n % 2 == 0) return 31; else return 30; } } int yearday(int n) { int num = 0; for(int i = 1 ; i <= 12; i ++) { if(prime(i)) { for(int j = 1 ; j <= monthday(i,n) ; j ++) if(prime(j)) num++; } } return num; } int count(int year, int m1, int m2, int n1, int n2) { int i, j, num = 0, s, e; for(i = m1 ; i <= m2; i ++) { if(prime(i)) { if(i == m1) s = n1; else s = 1; if(i == m2) e = n2; else e = monthday(i,year); for(j = s ; j <= e ; j ++) if(prime(j)) num++; } } return num; } int main () { //freopen("A.in", "r", stdin); //freopen("A.out", "w", stdout); int re, y1, y2, m1, m2, n1, n2, i, j; scanf("%d",&re); while(re--) { int num = 0; scanf("%d%d%d%d%d%d",&y1,&m1,&n1,&y2,&m2,&n2); if(y1 == y2) { if(m1 == m2) { if(prime(m1)) { for(i = n1 ; i <= n2 ; i ++) { if(prime(i)) num++; } } } else { num+= count(y1,m1,m2,n1,n2); } } else { for(i = y1 ; i <= y2 ; i ++) { if(i == y1) { num += count(i,m1,12,n1,31); } else if (i == y2) { num += count(i,1,m2,1,n2); } else { num += yearday(i); } } } printf("%d\n",num); } return 0; }
- 1
Information
- ID
- 16952
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By