藍橋杯--2013--高斯日記(模擬)
阿新 • • 發佈:2019-01-28
1.高斯日記
大數學家高斯有個好習慣:無論如何都要記日記。他的日記有個與眾不同的地方,他從不註明年月日,而是用一個整數代替,比如:4210後來人們知道,那個整數就是日期,它表示那一天是高斯出生後的第幾天。這或許也是個好習慣,它時時刻刻提醒著主人:日子又過去一天,還有多少時光可以用於浪費呢?高斯出生於:1777年4月30日。在高斯發現的一個重要定理的日記上標註著:5343,因此可算出那天是:1791年12月15日。高斯獲得博士學位的那天日記上標著:8113請你算出高斯獲得博士學位的年月日。提交答案的格式是:yyyy-mm-dd, 例如:1980-03-21請嚴格按照格式,通過瀏覽器提交答案。注意:只提交這個日期,不要寫其它附加內容,比如:說明性的文字。
剛開始用visual stdio,自動排版,挺不錯的
//從出生年開始算起,這種題一般都要掐頭去尾,我直接把頭加上了, //出生第一天也算是活了一天,所以加119就行, #include<iostream> using namespace std; int month[13] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; int main() { int n; while (cin >> n) { n += 119; int year = 1777; while (n >= 365)//算出n所在的年份 { if ((year % 4 == 0 && year % 400 != 0)|| year % 400 == 0) n -= 366; else n -= 365; year++; } int mon; if ((year % 4 == 0 && year % 400 != 0) || year % 400 == 0) month[1]++;//如果是閏年2月天數加一 for (mon = 0; mon <= 11; mon++) { if (n > month[mon]) n -= month[mon];//因為可以有4.30,所以這裡是>不是>= else break; } cout << year << "-" << mon+1 << "-" << n << endl; } return 0; }