现在的位置: 首页 > 综合 > 正文

USACAO friday

2018年01月12日 ⁄ 综合 ⁄ 共 1524字 ⁄ 字号 评论关闭

背景:开始一看好一道模拟题,应该很复杂吧,想了好久简化了还好。还是调了几次,竟然因为没有打'\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;
} 



【上篇】
【下篇】

抱歉!评论已关闭.