Luoyoooo

与其感慨路难行,不如马上出发

[计算星期几]7-6 黑色13号 (20分)

1 号 让人觉得十分不爽 是一个不同寻常的日子。

现在你来计算下未来 n 年里 1 号落在周一到周日的天数。

假定当前日期是 1 年 1 月 1 日,星期一。

输入格式:

在一行里给出一个n(1n500)。

输出格式:

七个整数,第一个代表落在周六的天数,第二个代表落在周天的天数,第三个代表落在周一的天数。。。。。。

行首尾不要输出多余的空格。

输入样例:

20

输出样例:

在这里给出相应的输出。例如:

36 33 34 33 35 35 34

 

思路:基姆拉尔森计算公式

 1 #include<iostream>
 2 #include<cstring>
 3 using namespace std;
 4 int main()
 5 {
 6     int a[8];
 7     memset(a, 0, sizeof(a));
 8     int y = 1900, m = 1, d = 13, w, tmp;
 9     cin >> tmp;
10     for (int i = 1900; i < tmp+1900; i++)
11     {
12         for (int j = 1; j <= 12; j++)
13         {
14             m = j;
15             y = i;
16             if (j == 1)
17             {
18                 m = 13;
19                 y = i-1;
20             }
21             if (j == 2)
22             {
23                 m = 14;
24                 y = i-1;
25             }
26             w = (d + 2 * m + 3 * (m + 1) / 5 + y + y / 4 - y / 100 + y / 400 ) % 7+1;
27             a[w]++;
28         }
29     }
30     printf("%d ", a[6]);
31     printf("%d ", a[7]);
32     for (int i = 1; i < 5; i++)
33         printf("%d ", a[i]);
34     printf("%d", a[5]);
35 }

 

posted @ 2020-02-04 18:34  Luoyoooo  阅读(241)  评论(0)    收藏  举报