首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

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

2013-10-25 
(应用直接存取类线性表4.1.1)POJ 2080 Calendar(日期计算)/* * POJ_2080.cpp * *Created on: 2013年10月25

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

/* * 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;}

热点排行