CCF - 201503-3 - 节日
生活随笔
收集整理的這篇文章主要介紹了
CCF - 201503-3 - 节日
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
問題描述
| 試題編號: | 201503-3 |
| 試題名稱: | 節日 |
| 時間限制: | 1.0s |
| 內存限制: | 256.0MB |
| 問題描述: | 問題描述 有一類節日的日期并不是固定的,而是以“a月的第b個星期c”的形式定下來的,比如說母親節就定為每年的五月的第二個星期日。 現在,給你a,b,c和y1, y2(1850 ≤ y1, y2?≤ 2050),希望你輸出從公元y1年到公元y2年間的每年的a月的第b個星期c的日期。 提示:關于閏年的規則:年份是400的整數倍時是閏年,否則年份是4的倍數并且不是100的倍數時是閏年,其他年份都不是閏年。例如1900年就不是閏年,而2000年是閏年。 為了方便你推算,已知1850年1月1日是星期二。 輸入格式 輸入包含恰好一行,有五個整數a, b, c, y1, y2。其中c=1, 2, ……, 6, 7分別表示星期一、二、……、六、日。 輸出格式 對于y1和y2之間的每一個年份,包括y1和y2,按照年份從小到大的順序輸出一行。 如果該年的a月第b個星期c確實存在,則以"yyyy/mm/dd"的格式輸出,即輸出四位數的年份,兩位數的月份,兩位數的日期,中間用斜杠“/”分隔,位數不足時前補零。 如果該年的a月第b個星期c并不存在,則輸出"none"(不包含雙引號)。 樣例輸入 5 2 7 2014 2015 樣例輸出 2014/05/11 2015/05/10 評測用例規模與約定 所有評測用例都滿足:1 ≤ a ≤ 12,1 ≤ b ≤ 5,1 ≤ c ≤ 7,1850 ≤ y1, y2?≤ 2050。 |
代碼
#include <iostream> using namespace std; int m[2][13]={{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}}; int leapyear(int year) {return (year%4==0&&year%100!=0)||year%400==0; }int main() {int i,j,a,b,c,y1,y2,weekd,day,y,days,data;cin>>a>>b>>c>>y1>>y2;//計算1850年到起始年的天數for(days=0,i=1850;i<y1;i++)days+=365+leapyear(i);//計算年月日并且輸出for(i=y1;i<=y2;i++){//0為非閏年,1為閏年y=leapyear(i);//計算從1850年開始,到i年a月1日的天數for(data=days,j=1;j<a;j++)data+=m[y][j];// 計算i年a月1日的前一天為星期幾weekd=1+data%7;// 計算i年的a月第b個星期c是當月的幾號day=(b-1)*7+((weekd>=c)?(c+7-weekd):(c-weekd));if(day>m[y][a])cout<<"none"<<endl;else{cout<<i<<"/";if(a<10)cout<<"0";cout<<a<<"/";if(day<10)cout<<"0";cout<<day<<endl;}// 為計算下一年做準備:計算從1850年到下一年開始的天數days+=365+leapyear(i);}return 0; }?
轉載于:https://www.cnblogs.com/5211314jackrose/p/7529337.html
總結
以上是生活随笔為你收集整理的CCF - 201503-3 - 节日的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 9.15——模拟赛
- 下一篇: 第一次作业:艰难的计算机之路