背景:开始一看好一道模拟题,应该很复杂吧,想了好久简化了还好。还是调了几次,竟然因为没有打'\n'而wa了!!!
学习:1.今天晚上和李兵学长逛了逛校园,交流了学习上的事,acm这条路我自己选的跪着走好走完!再次感谢学长对小白的关照,还是学长请我喝的奶茶,感谢。(学长已经在soj过了300题了)
2.代码在这里显然还不够精简,主要是12个月每个月都建立了一个for循环,以这个月的天数作为,跳出循环的条件。何不建立一个数组month[31,isleap,31,30,31,30,31,31,30,31,30,31],以month[i]作为退出条件?
心得:这是一道模拟题,开始读了这个题后就发现时模拟题,有点恐惧,仔细一想又觉得可写,为什么清华那些神牛队伍总是读题很慢,出题很快,因为他们有一个思考的过程把这个题思考的很透彻了。以后我也要多一些时间思考。然后不是每个人都需要自己独特的代码强项吗?从此以后我看到模拟题就上,我要成为“模拟题小王子”
/* ID:jibancan1 LANG:C++ TASK:friday */ #include<stdio.h> int isleap(int x); int isleap(int x){ if(x%100==0) if(x%400==0) return 29; else return 28; else if(x%4==0) return 29; else return 28; } int main(void){ freopen("friday.in","r",stdin); freopen("friday.out","w",stdout); int n,ax=0,feb,a[8]={0,0,0,0,0,0,0}; scanf("%d",&n); for(int i=0;i<n;i++){ feb=isleap(1900+i); for(int j=0;j<31;j++){ ax++; if(ax==8) ax=1; if(j==12) a[ax]++; } for(int j=0;j<feb;j++){ ax++; if(ax==8) ax=1; if(j==12) a[ax]++; } for(int j=0;j<31;j++){ ax++; if(ax==8) ax=1; if(j==12) a[ax]++; } for(int j=0;j<30;j++){ ax++; if(ax==8) ax=1; if(j==12) a[ax]++; } for(int j=0;j<31;j++){ ax++; if(ax==8) ax=1; if(j==12) a[ax]++; } for(int j=0;j<30;j++){ ax++; if(ax==8) ax=1; if(j==12) a[ax]++; } for(int j=0;j<31;j++){ ax++; if(ax==8) ax=1; if(j==12) a[ax]++; } for(int j=0;j<31;j++){ ax++; if(ax==8) ax=1; if(j==12) a[ax]++; } for(int j=0;j<30;j++){ ax++; if(ax==8) ax=1; if(j==12) a[ax]++; } for(int j=0;j<31;j++){ ax++; if(ax==8) ax=1; if(j==12) a[ax]++; } for(int j=0;j<30;j++){ ax++; if(ax==8) ax=1; if(j==12) a[ax]++; } for(int j=0;j<31;j++){ ax++; if(ax==8) ax=1; if(j==12) a[ax]++; } } printf("%d %d %d %d %d %d %d\n",a[6],a[7],a[1],a[2],a[3],a[4],a[5]); return 0; }