这题可以直接暴力来解决。枚举1900~1900+n-1年,每年枚举十二个月,再枚举判断每个月的天数。。至于周几,就可以用一个变量不断的叠加。。数据量不大,所以肯定能过- -。
#include"stdio.h" int f(int n) { if(n%4==0&&n%100!=0||n%400==0) return 1; return 0; } int main() { int n,i,a[8]={0},j,k,m=0; int b[2][12]={31,28,31,30,31,30,31,31,30,31,30,31, 31,29,31,30,31,30,31,31,30,31,30,31}; scanf("%d",&n); for(i=1900;i<1900+n;i++) { for(k=0;k<12;k++) { for(j=1;j<=b[f(i)][k];j++) { if(m==7) m=1; else m++; if(j==13) a[m]++; } } } printf("%d %d",a[6],a[7]); for(i=1;i<=5;i++) printf(" %d",a[i]); return 0; }