南邮 OJ 1596 日历
来源:互联网 发布:淘宝的导航条 编辑:程序博客网 时间:2024/06/01 23:02
日历
时间限制(普通/Java) : 1000 MS/ 3000 MS 运行内存限制 : 65536 KByte
总提交 : 422 测试通过 : 80
总提交 : 422 测试通过 : 80
比赛描述
在我们现在使用的日历中, 闰年被定义为能被4整除的年份,但是能被100整除而不能被400整除的年是例外,它们不是闰年。例如:1700, 1800, 1900 和 2100 不是闰年,而 1600, 2000和2400是闰年。
给定从公元1900年1月1日开始逝去得天数,你的任务是给出这一天是哪年哪月哪日星期几。
输入
输入包含若干行,每行包含一个正整数,表示从1900年1月1日开始逝去的天数。输入最后一行是−1, 不必处理。可以假设结果的年份不会超过9999。
输出
对每个测试样例,输出一行,该行包含对应的日期和星期几。格式为“YYYY.MM.DD DayOfWeek”, 其中 “DayOfWeek” 必须是下面中的一个:“Sunday”, “Monday”, “Tuesday”, “Wednesday”, “Thursday”, “Friday” and “Saturday”。
样例输入
40163
8000
17500
2371
-1
样例输出
2009.12.18 Friday
1921.11.27 Sunday
1947.12.1 Monday
1906.6.30 Saturday
提示
题目来源
NUPT
#include<iostream>char w[7][10]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};int monthDay[12]={31,28,31,30,31,30,31,31,30,31,30,31};bool isLeapYear(int n){if(n%4 || !(n%100) && n%400){return 0;}return 1;}void printDate(int n){int year,month,day;year = 1900;n++;while(n>366){if(isLeapYear(year)){n -= 366;}else{n -= 365;}year++;}if(!isLeapYear(year) && n>365){n -= 365;year++;}if(isLeapYear(year)){monthDay[1] = 29;}else{monthDay[1] = 28;}for(month=0;month<12;month++){if(n>monthDay[month]){n -= monthDay[month];}else{day = n;break;}}printf("%d.%d.%d",year,month+1,day);}int main(){//freopen("test.txt","r",stdin);int n;while(scanf("%d",&n) && n!=-1){printDate(n);printf(" %s\n",w[(n+1)%7]);}}
0 0
- 南邮 OJ 1596 日历
- 百练OJ:2964:日历问题
- HNU OJ题库 1006G日历问题
- 日历
- 日历
- 日历
- 日历
- 日历
- 日历
- 日历
- 日历
- 日历
- 日历
- 日历
- 日历
- 日历
- 日历
- 日历
- 正则表达式判断NSString 是否为数字
- UVA 10054 The Necklace
- 日经春秋 20150806
- 部署按钮点击无反应
- shell 知识点备忘
- 南邮 OJ 1596 日历
- #if、#ifdef、#if defined之间的区别
- Swift开发教程--如何通过定位来获取经纬度
- 服务器IP变更后如果更新openfire 服务IP
- 南邮 OJ 1597 约瑟夫问题
- Linux启动过程总结
- Android 中 Handler 引起的内存泄露
- eclipse使用
- hdu 1061 Rightmost Digit 快速幂