杭电acm 1201
这道题我就是分类讨论,看他生在哪一年,用leap表示闰年的话就是4种情况:leap,leap+1,leap+2,leap+3.
然后就这四种情况求出天数,可为什么不对呢?我实在是找不出原因来了。
请牛人帮忙看一下,感激不尽!
代码在下面:
#include<stdio.h>
int leap(int year)
{
return (year%400==0 || ( year%4==0 && (year%100)!=0));
}
int main()
{
int t,year,month,day,sum=0,i;
scanf("%d",&t);
while(t--)
{
scanf("%d-%d-%d",&year,&month,&day);
if(month==2 && day==29 )
sum=-1;
else if(leap(year))
{
if(month==2 && day<=28 || month==1)
sum=365*18+5;
else
sum=365*18+4;
}
else if(leap(year-1))
sum=365*18+4;
else if(leap(year-2))
{
if(month==2 || month==1)
sum=365*18+4;
else
sum=365*18+5;
}
else
sum=365*18+5;
printf("%d\n",sum==-1?-1:sum);
}
return 0;
}
[解决办法]
把题目贴上来吧。是否题意就没解析正确
[解决办法]
如果这个人没有18岁生日,就输出-1。
楼主你的代码完成这个了么?你输出-1的时候是什么情况的呢
[解决办法]
楼主代码完成了那个功能的哈~
楼主的错误在于算法问题,可否想过当输入整百数的时候,比如说类似1900这样特殊的年份,
按你代码的意思应该会经历5个闰年,但其实只经历了1904、1908、1912、1916这四个闰年