37 黑色星期五

问题描述 :

13号又是星期五是一个不寻常的日子吗? 13号在星期五比在其他日少吗?为了回答这个问题,写一个程序来计算在n年里13 日落在星期一,星期二......星期日的次数.这个测试从1900年1月1日到 1900+n-1年12月31日.n是一个非负数且不大于400.

这里有一些你要知道的: 1900年1月1日是星期一. 4,6,11和9月有30天.其他月份除了2月都有31天.闰年2月有29天,平年2月有28天.

输入说明 :

一个整数n(1<= n <= 400).

输出说明 :

七个在一行且相分开的整数,它们代表13日是星期六,星期日,星期一.....星期五的次数.

输入范例 :20

输出范例 :36 33 34 33 35 35 34

 

思想:遍历每一年的每个月份的13号,同时计算出下一个月13号是周几,注意从周六开始输出。

#include <stdio.h>


int main()

{

    int a, b,i,j,day=6;
    int res[8]={0};
    int r;
    int day1[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    int day2[12]={31,29,31,30,31,30,31,31,30,31,30,31};  
    scanf("%d", &a);
    for(i=0;i<a;i++){
        int x = i+1900;
        if((x % 100 == 0 && x % 400 == 0) || (x % 100 != 0 && x % 4 == 0)){
            for(j=0;j<12;j++){
                res[day]++;
                day=(day+day2[j]-1)%7+1;
             }
        }else{
            for(j=0;j<12;j++){
                res[day]++;
                day=(day+day1[j]-1)%7+1;
        }
    }
  }
    printf("%d ",res[6]);
    printf("%d ",res[7]);
    for(i =1;i<6;i++){
        printf("%d ",res[i]);
    }
    return 0;

}

 

posted @ 2022-02-27 16:06  梦想是能睡八小时的猪  阅读(35)  评论(0)    收藏  举报