[規格]1308 D-day python


D-Day


質問する


キャンプ場に来たソン・ユジンはキャンプ場が退屈で、今日からキャンプが終わるまであと数日あることを知りたいと思っていた.しかし、キャンプ場は非常に長い(閏年を含むかもしれない)可能性があり、手で1つ1つ数えるのは難しいように見えます.
より正確な計算のために、有真は閏年の基準を見つけました.
  • 簿記年数が4の年で、閏年が優先されます.(2004年、2008年、...)
  • 100年は平年です.(2100年、2200年、...)
  • 400年と、うるう年に分けられます.(1600年、2000年、...)
  • しかし、キャンプが長すぎると、思春期にキャンプを離れる可能性があります.

    入力


    1行目は今日の日付、2行目はD-Dayの日付を示します.日付は年、月、日の順にスペースで区切られています.入力範囲は1年1月1日から9999年12月31日まで.今日の日付はいつもD-Dayの前にあります

    しゅつりょく


    今日からD-Dayまでx日が残っている場合は「D-」を出力し、スペースを残さずxを出力します.キャンプが千年以上続いた場合(今日はy年m月d、D-Dayがy+1000年m月dに等しいか遅い場合)、「gg」が出力されます.今日が2月29日の場合は許されません.

    解決策

  • pythonのdatetimeモジュールを使用して年月日を計算し、日付の違いを求めることができます.
    例えば、
  • 、数字が2008年12月27日、2009年1月22日であれば、
    26日間、0:00:00に出力します.
  • では、作業と接続が第1の要素であるため、これを文字に変換して2つの部分に分ける.
  • は、次に最初の因子を取り、次いで数字になる.
  • うるう年と平年を
  • 複文で処理する.
  • y1,m1,d1 = map(int,input().split())
    y2,m2,d2 = map(int,input().split())
    
    # def yoon(year) :
    #     return year//4-year//10+year//400
    
    # def mon(year,month) :
    #     if month == 0 :
    #         return 0
    #     result = 0
    #     for i in range(1,month+1) :
    #         if i in [1,3,5,7,8,10,12] :
    #             result += 31
    #         elif i in [4,6,9,11] :
    #             result += 30
    #         elif i == 2 :
    #             if year//400 == 0:
    #                 result += 29
    #             elif year//100 ==0 :
    #                 result += 28
    #             elif year//4 ==0 :
    #                 result += 29
    #             else :
    #                 result += 28
    #     return result
    
    
    
    # Day1 = (y1-1)*365+yoon(y1-1) + mon(y1,m1-1) + d1
    # Day2 = (y2-1)*365+yoon(y2-1) + mon(y2,m2-1) + d2
    
    # if y2-y1>1000 :
    #     print('gg')
    #     exit()
    # elif y2-y1==1000 and m2>m1 :
    #     print('gg')
    #     exit()
    # elif y2-y1==1000 and m1==m2 and d2>=d1 :
    #     print('gg')
    #     exit()
    # else : 
    #     print(f'D-{Day2-Day1}')
    import datetime
    print(str(datetime.date(y2,m2,d2)-datetime.date(y1,m1,d1)))
    
    d_day = int(str(datetime.date(y2,m2,d2)-datetime.date(y1,m1,d1)).split()[0])
    
    over = 0 
    for i in range(0,1000) :
        if i%400==0 :
            over +=366
        elif i%100==0 :
            over += 365
        elif i%4==0 :
            over += 366
        else :
            over += 365
    
    if d_day >= over :
        print('gg')
    else :
        print(f'D-{d_day}')