java戦闘13:月曜日

java戦闘13:月曜日

ブルーブリッジカップ第9回ジャワ州選手権グループA2。

元のタイトル:
タイトル:月曜日

20世紀を通して(1901年1月1日から2000年12月31日まで)、月曜日は何回ありましたか?
(今日が何日かわからないと言わないでください)

注:提出する必要があるのは整数のみであり、余分なコンテンツや説明テキストを入力しないでください。

アイデア:最初に1901年1月1日の曜日を決定し、次に2000年12月31日の曜日を決定します。この質問では、月曜日の数を尋ねられます。1901年1月1日は火曜日、2000年12月31日は日曜日、したがって、合計日数を7で割り、残りの日数は6です。たまたま少ない日は月曜日です。7で割り、四捨五入して、月曜日の合計日数である週数を取得します。 。この質問で水曜日の日数を尋ねる場合、週数は+1でなければなりません。

曜日決定するために使用されるコード

コードは次のように表示されます。

public class province_2 {
    
    
	public static void main(String[] args) {
    
    
		//先判断1901年1月1日是周几,2000年12月31日是周几。
		calculateWeek c1=new calculateWeek(1901,1,1);
		calculateWeek c2=new calculateWeek(2000,12,31);
		//因为算出一个是周六一个是周日。这其中包含几个周一,就可以直接看这其中一共有几个完整的周就可以了。
		int sum=0;int y=1901;int d;
		while(y>=1901&&y<=2000) {
    
    
			if(y%400==0||(y%4==0&&y%100!=0)) {
    
    
				d=366;
			}
			else {
    
    
				d=365;
			}
			sum+=d;
			y++;
		}
		System.out.println(sum/7);
	}

}
class calculateWeek{
    
    
	public calculateWeek(int y,int m,int d){
    
    
        int Week;
        if(m==1||m==2) {
    
    
            m+=12;y--;
        }
        Week= (d + 2 * m + 3 * (m + 1) / 5 + y + y/4 - y/100 + y/400) % 7;  ;
        switch(Week) {
    
    
            case 0:System.out.println("周一");break;
            case 1:System.out.println("周二");break;
            case 2:System.out.println("周三");break;
            case 3:System.out.println("周四");break;
            case 4:System.out.println("周五");break;
            case 5:System.out.println("周六");break;
            case 6:System.out.println("周日");break;
        }
    }
}

演算結果:
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_46020391/article/details/112596721