[蘭橋カップパイソン]:ランニングトレーニング----シャオランは毎日練習します。通常の状況では、シャオランは毎日 1 キロメートルを走ります。特定の日が月曜日または月の 1 日の場合、シャオランは自分を奮い立たせるために 2 キロメートルを走ります。月曜日か月初めであれば、シャオランも2キロ走ります。小蘭

トピック:

 答え:

アイデア:

  1. まず 365 日または 366 日を足し、次に 12 を足し、それぞれの数字 1 を足します。まずは毎日1KMしか走らないものとして扱いましょう。
  2. 次に、1 年に月曜日が何回あるかを数えます。
  3. 次に、各月の 1 日を使用して、月曜日であるかどうかを判断します。月曜日である場合は、1 を減算します。これは、最初のステップが 1 日に 2KMl を実行するようにすでに計算されており、2 番目のステップが繰り返されて 1KM が追加されるためです。
  4. プログラムは 2020 年 12 月 31 日までに計算されるため、追加のランは差し引く必要があります。
result = 0

dict_run  = [31,29,31,30,31,30,31,31,30,31,30,31]
dict_ping = [31,28,31,30,31,30,31,31,30,31,30,31]

for i in range(2000,2021):
    #闰年处理
    if (i % 4 ==0 and i % 100 != 0) or i % 400 == 0:
        result += 378
        for x in range(1,367):
            xingqi_yi = ((i-1)*365 + i // 4 - i // 100 + i // 400 + x) % 7
            if xingqi_yi == 1:
                result += 1
        day = 1
        for j in range(12):
            #计算每月一号是不是星期一
            xingqi = ((i-1)*365 + i // 4 - i // 100 + i // 400 + day) % 7
            day += dict_run[j]
            if xingqi == 1:
                result -= 1
    #平年处理
    else:
        result += 377
        for x in range(1, 366):
            xingqi_yi = ((i - 1) * 365 + i // 4 - i // 100 + i // 400 + x) % 7
            if xingqi_yi == 1:
                result += 1
        day = 1
        for j in range(12):
            # 计算每月一号是不是星期一
            xingqi = ((i - 1) * 365 + i // 4 - i // 100 + i // 400 + day) % 7
            day += dict_ping[j]
            if xingqi == 1:
                result -= 1

print(result-106)

おすすめ

転載: blog.csdn.net/Callme_TeacherPi/article/details/123968535