第四屆藍橋杯 高斯日記

2021-07-10 06:06:12 字數 1602 閱讀 6505

大數學家高斯有個好習慣:無論如何都要記日記。

他的日記有個與眾不同的地方,他從不註明年月日,而是用乙個整數代替,比如: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年...