倪文迪陪你学藍橋杯2021冬休み毎日一題:1.14日(2018省試合A組第2題)


2021年冬休み毎日1題、2017~2019年の省試合本題.本文の内容は倪文迪(華東理工大学コンピュータ学部ソフトウェア192クラス)と羅勇軍先生から提供された.次の毎日の問題は、新しいブログを送ります.毎日ブログのブルーブリッジカップのコラムを見てください.https://blog.csdn.net/weixin_43914593/category_10721247.html
各問題にはC++、Java、Pythonの3言語のコードが提供されている.
文書ディレクトリ
  • 1、題名説明
  • 2、題解
  • 2.1 excel

  • 3、C++コード
  • 4、Javaコード
  • 5、Pythonコード
  • 2018省試合A組第2題「月曜日」、タイトルリンク:http://oj.ecustacm.cn/problem.php?id=1360
    1、テーマの説明
    20世紀全体(1901年1月1日から2000年12月31日まで)、全部で何週間の月曜日がありますか?
    2、問題解
    問題を空欄にして、点数をつける.  倪文迪氏は「問題の要求の合計日数を計算し、カレンダーをめくって2000年12月31日が日曜日であることを見て、総日数sumを7とmod 7で割った結果から判断すればいい」と話した.パソコンのデスクトップの右下に日付をクリックすると、曜日を調べることができます.時間範囲は100年で、1921-2021年です.
    2.1 excel
    多くの先生と同級生は、パソコンにexcelがあれば、それを使ってもいいと言っています.1つの格子入力日1901年1月1日、別の格子入力2000年12月31日、その後、2つの格子は36524日に減少し、7で割って5217.7週間となった.2000年12月31日は日曜日で、説明の答えは5217です.
    3、C++コード
    #include
    using namespace std;
    
    int main(){
         
    	int sum = 0;
    	for(int i = 1901 ; i <= 2000 ; i++){
         
    		if((i % 4 == 0 && i % 100 != 0) || i % 400 == 0) //    
    			sum += 366;
    		else
                sum += 365;
    	}
      //cout << sum % 7 << endl; // 6      ,        。2000 12.31    
    	cout << sum / 7 << endl; // 5217
    
    	return 0;
    }
    
    

    4、Javaコード
    public class Main {
          
        public static void main(String[] args) {
         
            int sum = 0;
            for (int i = 1901; i <=2000; i++) {
         
                if ((i%4==0 && i%100!=0) || i%400==0)
                    sum += 366;
                else 
                    sum += 365;             
            }
            System.out.println(sum/7); 
        } 
    }
    

    5、Pythonコード
    Python大法好!
    sum = 0
    for i in range(1901,2001):
        if (i%4==0 and i%100!=0) or (i%400==0):
            sum += 366
        else:
            sum += 365
    #print(sum % 7) #    
    print(sum//7)
    

    しかし、羅先生はPythonの教材をめくったばかりで、前が無駄だったことに気づいた.直接ハード:
    from datetime import *
    dt1 = datetime(1901,1,1)
    dt2 = datetime(2000,12,31)
    td = dt2- dt1
    print(td.days//7)