(应用直接存取类线性表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; }
补充:软件开发 , C++ ,