[计算星期几]7-6 黑色13号 (20分)
1 号 让人觉得十分不爽 是一个不同寻常的日子。
现在你来计算下未来 n 年里 1 号落在周一到周日的天数。
假定当前日期是 1 年 1 月 1 日,星期一。
输入格式:
在一行里给出一个n(1≤n≤500)。
输出格式:
七个整数,第一个代表落在周六的天数,第二个代表落在周天的天数,第三个代表落在周一的天数。。。。。。
行首尾不要输出多余的空格。
输入样例:
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 }

浙公网安备 33010602011771号