(应用直接存取类线性表4.1.1)POJ 2080 Calendar(日期计算)

来源:互联网 发布:python 微信公众号 编辑:程序博客网 时间:2024/05/29 19:47
/* * POJ_2080.cpp * *  Created on: 2013年10月25日 *      Author: Administrator */#include <iostream>#include <cstdio>using namespace std;//将起始时间的星期数作为数组的第一个元素const char wstr[][20]={"Saturday","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday"};//计算year有多少天int days_of_year(int year){if(year % 100 == 0){return (year % 400 == 0) ? 366 : 365;}return (year % 4 == 0) ? 366 : 365;}//计算year的month月有多少天int days_of_month(int month,int year){if(month == 2){return days_of_year(year) == 366 ? 29 : 28;}int d;switch(month){case 1:case 3:case 5:case 7:case 8:case 10:case 12:d = 31;break;default:d = 30;}return d;}int main(){int n;while(scanf("%d",&n)!=EOF,n!=-1){int year = 2000;int month = 1;int day = 1;int weak = n % 7;while(n){if(n >= days_of_year(year)){n -= days_of_year(year);++year;}else if(n >= days_of_month(month,year)){n -= days_of_month(month,year);++month;}else{day += n;n = 0;}}cout<<year<<"-"<<(month < 10 ? "0":"")<<month<<"-"<<(day < 10 ?"0":"")<<day<<" "<<wstr[weak]<<endl;}return 0;}

原创粉丝点击