大數學家高斯有個好習慣:無論如何都要記日記。
他的日記有個與眾不同的地方,他從不註明年月日,而是用乙個整數代替,比如:4210
高斯出生於:2023年4月30日。
在高斯發現的乙個重要定理的日記上標註著:5343,因此可算出那天是:2023年12月15日。
高斯獲得博士學位的那天日記上標著:8113
請你算出高斯獲得博士學位的年月日。
提交答案的格式是:yyyy-mm-dd, 例如:1980-03-21
請嚴格按照格式,通過瀏覽器提交答案。
注意:只提交這個日期,不要寫其它附加內容,比如:說明性的文字。
分析:
網上的快速解法:
先看1778是閏年麼?答案是不是,所以 8113 - 365= 7748,
又1779也不是,所以再減365得7383,然後1780是的,所以減去366得7017,
又1781,1782,1783,肯定都不是所以連減3個365得5922,
然後又是閏年,-366,再-365 - 365-365 -366-365-365 -365 -366 -365-365 -365~-366 -365-365 -365 1799 得
78,即這一天是2023年4月30日之後的78天,5月31天,-31,6月30天,-30,剩17天,
此時即加上兩個月,為2023年6月30日,然後往後數17天,即為2023年7月16日。 //注意這裡,6月30日,往後數17天得到的是7月16日,奇怪吧?
所以說他是從6月30日開始數起的,高斯出生的那天過去了,也算是一天。
答案即為:1799-07-16
我的解法:
題意為:給乙個日期,乙個天數,求過完這個天數後的日期。
我們可以模擬現實,天數大了一年一年過,小了一月一月過。
1.判斷所給日期的那個月份能否過完
2.判斷能過幾年,此時要注意閏年
1『今年是閏年,且今年的2月沒 過,則過了今年天數要減去366
2』今年的2月已經過了,且明年是閏年,則過了今年天數要減去366
3.最後剩餘的天數再判斷能過幾個月
此**輸入年、月、日、經過的天數(需大於0),將輸出結果日期
如果發現**有紕漏,請不吝賜教!
#include #include using namespace std;
int month[13] = ;
int y, m, d, sum;
//判斷年數 n 是否為閏年
bool isleapyear(int n)
//計算結果日期
void display()
else
//再判斷能過幾年
while(sum > 365)
//剩下不滿一年的時間再過完
for(int i = m + 1; ; i++)
if (i == 2) //二月份要特殊判斷
if (sum >= month[i]) //這個月能過完
else
break;
} d = sum; //最終的日就是剩下的天數
}int main()
return 0;
}
第四屆藍橋杯 高斯日記
問題描述 大數學家高斯有個好習慣 無論如何都要記日記。他的日記有個與眾不同的地方,他從不註明年月日,而是用乙個整數代替,比如 4210 後來人們知道,那個整數就是日期,它表示那一天是高斯出生後的第幾天。高斯出生於 1777年4月30日。在高斯發現的乙個重要定理的日記上標註著 5343,因此可算出那天...
第四屆藍橋杯C A組 高斯日記
大數學家高斯有個好習慣 無論如何都要記日記。他的日記有個與眾不同的地方,他從不註明年月日,而是用乙個整數代替,比如 4210 高斯出生於 1777年4月30日。在高斯發現的乙個重要定理的日記上標註著 5343,因此可算出那天是 1791年12月15日。高斯獲得博士學位的那天日記上標著 8113 請你...
第四屆藍橋杯C B組 高斯日記
大數學家高斯有個好習慣 無論如何都要記日記。他的日記有個與眾不同的地方,他從不註明年月日,而是用乙個整數代替,比如 4210 後來人們知道,那個整數就是日期,它表示那一天是高斯出生後的第幾天。這或許也是個好習慣,它時時刻刻提醒著主人 日子又過去一天,還有多少時光可以用於浪費呢?高斯出生於 1777年...