欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

1332: 生日日数

发布时间:2024/9/3 46 豆豆
生活随笔 收集整理的这篇文章主要介绍了 1332: 生日日数 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1332: 生日日数
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 339 Solved: 163
[Submit][Status][Web Board]
Description

CCC老师的生日是YY年MM月DD日,他想知道自己出生后第一万天纪念日的日期(出生日算第0天)。

Input

输入有多行,格式为YY MM DD 其中1949<=YY<=2006,日期绝对合法。

Output

输出有多行。即CCC老师生日第一万天以后的日期,格式为 “Y-M-D”。

Sample Input

1979 4 16

Sample Output

2006-9-1

HINT

Source

AC_code~:

#include <stdio.h> bool leapyear(int y) {return (y%4==0&&y%100)||(y%400==0); } int main() {int month[]= {0,31,0,31,30,31,30,31,31,30,31,30,31};int y,m,d;while(~scanf("%d%d%d",&y,&m,&d)){int days = 10000 + d;if(leapyear(y))month[2] = 29;elsemonth[2] = 28;for(int i = 1; i <= m-1; i++)//从y年1月1号算10000+d+month[1...m-1]天days += month[i];for(int i = 0; days >= 365; i++)//直到days剩下不到一年好确定月日{if(leapyear(y++))days -= 366;elsedays -= 365;}if(leapyear(y))month[2] = 29;elsemonth[2] = 28;int sum = 0;int new_y,new_m = 1,new_d = 1;//如果days==0,new_m和new_d应该为1,所以赋初值为1for(int i = 1; i <= 12; i++){sum += month[i];if(sum>=days&&sum-month[i]<days){new_m = i;new_d = month[i] -(sum - days);break;}}new_y = y;printf("%d-%d-%d\n",new_y,new_m,new_d);}return 0; }

总结

以上是生活随笔为你收集整理的1332: 生日日数的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。