HDU2005 (第几天? 闰年)

刚开始写的代码都是超时。只有把月份罗列在数组里才不会超时。(我也不知道为什么。。。)

第几天?

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 52596 Accepted Submission(s): 19841
Problem Description
给定一个日期,输出这个日期是该年的第几天。
Input
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
Output
对于每组输入数据,输出一行,表示该日期是该年的第几天。
Sample Input
    
    
1985/1/20 2006/3/12

Sample Output
     
     
20 71

Author
lcy

Source

//超时。 #include<iostream>using namespace std;int main(){ int y,m,d,date; while(scanf("%d/%d/%d",&y,&m,&d)&&y&&m&&d) { date=0; int feb,mm=0; if(y%4==0||(y%100!=0&&y%400==0)) feb=29; //闰年 else feb=28; if(m==1) mm=0; else for(int i=1;i<m;i++) { if(i==2) mm+=feb; else if(i==4||i==6||i==9||i==11) mm+=30; else mm+=31; } date+=d+mm; cout<<date<<endl; }return 0;}


//A 了。 
#include<stdio.h>
int main()
{
	//只有罗列出来,才能通过。 
	int year,month,day;
	int s[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};
	while(scanf("%d/%d/%d",&year,&month,&day)==3)
	{
		int leap=0;
		if(year%4==0&&year%100!=0||year%400==0)
			leap=1;
		int sum=0;
		int i;
		for(i=1;i<month;i++)
		{
			sum+=s[leap][i];
		}
		sum+=day;
		printf("%d\n",sum);
	}
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值