藍橋杯每日一題(1) 高斯日記(python)

2021-10-14 02:53:49 字數 1493 閱讀 6331

topic:

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

他的日記有個與眾不同的地方,他從不註明年月日,而是用乙個整數代替,比如:4210

後來人們知道,那個整數就是日期,它表示那一天是高斯出生後的第幾天。這或許也是個好習慣,它時時刻刻提醒著主人:日子又過去一天,還有多少時光可以用於浪費呢?

高斯出生於:2023年4月30日。

在高斯發現的乙個重要定理的日記上標註著:5343,因此可算出那天是:2023年12月15日。

高斯獲得博士學位的那天日記上標著:8113

請你算出高斯獲得博士學位的年月日

solution:

(由示例可看出出生也算一天)

由於和日期相關,很容易就聯想到datetime模組

先用strptime函式將出生日期轉化為datetime形式方便後續處理

之後用deltatime函式轉化days為delta days(增量時間)

最後將出生日期和增量時間相加得到最後時間

用strftime方法最後輸出時間

也可直接輸出,但直接輸出結果包括分秒

code_1:

import datetime

days =

int(

input()

)-1birth = datetime.datetime.strptime(

'1777-4-30'

,'%y-%m-%d'

)delta = datetime.timedelta(days=days)

doctor = birth + delta

print

(doctor.strftime(

'%y-%m-%d'

))

code_2:

通用方法,不僅侷限於本題

import datetime

days =

int(

input

('間隔天數:'))

-1year =

str(

input

('開始年份:'))

month =

str(

input

('開始月份:'))

day =

str(

input

('開始日期:'))

start =

[year, month, day]

start =

'-'.join(start)

birth = datetime.datetime.strptime(start,

'%y-%m-%d'

)delta = datetime.timedelta(days=days)

doctor = birth + delta

print

(doctor.strftime(

'%y-%m-%d'

))

2023年藍橋杯預賽第一題高斯日記

解題思路 先將初始日期提至1778年1月1日,不斷加上365 閏年加366 直到不能再加,得到年份 不斷加上相應月份的天數,直到不能再加,得到月份,此時得到 year month 01,因為1777 4 30算作8113天的第一天,用5343,1791 12 15的資料驗證 所以剩下的天數就是day...

藍橋杯 每日一題 Sine之舞

最近fj為他的奶牛們開設了數學分析課,fj知道若要學好這門課,必須有乙個好的三角函式基本功。所以他準備和奶牛們做乙個 sine之舞 的遊戲,寓教於樂,提高奶牛們的計算能力。不妨設an sin 1 sin 2 sin 3 sin 4 sin n sn a1 n a2 n 1 a3 2 an 1 fj想...

藍橋杯大賽 每日一題(1 子串分值)

問題描述 對於乙個字串s,我們定義s的分值f s 為s中恰好出現一次的字元個數。例如f aba 1,f abc 3,f aaa 0。現在給定乙個字串s 0 n 1,請你計算對於所有s的非空子串s i j 0 is j 這道題咋說呢,我開始看的時候感覺很難,但是只要你理解了感覺也很簡單了 我開始想到的...