程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 百練 2964 日歷問題 解題報告

百練 2964 日歷問題 解題報告

編輯:C++入門知識

1.鏈接:http://poj.grids.cn/practice/2964/

2.題目:

總時間限制:
1000ms
內存限制:
65536kB
描述
在我們現在使用的日歷中, 閏年被定義為能被4整除的年份,但是能被100整除而不能被400整除的年是例外,它們不是閏年。例如:1700, 1800, 1900 和 2100 不是閏年,而 1600, 2000 和 2400是閏年。 給定從公元2000年1月1日開始逝去的天數,你的任務是給出這一天是哪年哪月哪日星期幾。
輸入
輸入包含若干行,每行包含一個正整數,表示從2000年1月1日開始逝去的天數。輸入最後一行是−1, 不必處理。可以假設結果的年份不會超過9999。
輸出
對每個測試樣例,輸出一行,該行包含對應的日期和星期幾。格式為“YYYY-MM-DD DayOfWeek”, 其中 “DayOfWeek” 必須是下面中的一個: "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" 或 "Saturday“。
樣例輸入
1730 
1740 
1750 
1751 
-1
樣例輸出
2004-09-26 Sunday 
2004-10-06 Wednesday 
2004-10-16 Saturday 
2004-10-17 Sunday
提示
2000.1.1. 是星期六

3.代碼:

 #include <iostream>
 #include <cstdio>
 #include <cstdlib>
 #include <cstring>
 
   
  days_of_year[] = {,  days_of_month[] = {,,,,,,,,,,,,,,,,,,,,,,,  days_of_week[][] = {, , , , ,  , 
                         (scanf(,&day),day!=-          start_year =          start_month =          start_day =          start_week =          
         
         start_week = (start_week + day) %          
         
         (start_year %  ==  && !(start_year %  ==  && start_year %  !=               is_leap_year =           
              is_leap_year =           
         (day >=              start_year ++             day -=             
             
             (start_year %  ==  && !(start_year %  ==  && start_year %  !=                   is_leap_year =               
                  is_leap_year =            
         (day >= days_of_month[is_leap_year* + start_month -               day -= days_of_month[is_leap_year* + start_month -              start_month ++          
         start_day +=         
         
         printf(         }

4.思路

(1)首先要知道閏年的相關知識

(2)模擬每年每月的計算過程

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved