NC22891. 黑色星期五
描述
13号又是星期五是一个不寻常的日子吗?
13号在星期五比在其他日少吗?为了回答这个问题,写一个程序来计算在n年里13
日落在星期一,星期二......星期日的次数.这个测试从1900年1月1日到
1900+n-1年12月31日.n是一个非负数且不大于400.
输入描述
一个整数n.
输出描述
七个在一行且相分开的整数,它们代表13日是星期六,星期日,星期一.....星期五的次数.
示例1
输入:
20
输出:
36 33 34 33 35 35 34
C++(g++ 7.5.0) 解法, 执行用时: 3ms, 内存消耗: 408K, 提交时间: 2022-11-27 14:03:14
#include <bits/stdc++.h> using namespace std; int a[7]; int day[]={31,28,31,30,31,30,31,31,30,31,30,31}; int main(){ int n,total=0; cin >> n; int d=0; for(int i=0;i<n;i++){ int y=1900+i; for(int i=0;i<12;i++){ a[(d+13)%7]++; d+=day[i]; if(i==1&&(y%400==0||(y%4==0&&y%100!=0))){ d+=1; } } } for(int i=0;i<7;i++) cout << a[(i+6)%7] << " "; return 0; }
C++(clang++ 11.0.1) 解法, 执行用时: 2ms, 内存消耗: 408K, 提交时间: 2022-11-02 11:53:23
#include <iostream> using namespace std; int a[7]; int day[]={31,28,31,30,31,30,31,31,30,31,30,31}; int main() { int n,total=0; cin>>n; int d=0; for(int i=0;i<n;i++) { int y = 1900+i; for(int i=0;i<12;i++) { a[(d+13)%7]++; d += day[i]; if(i==1&&(y%400==0||(y%4==0&&y%100!=0)))//闰年2月 d+=1; } } for(int i=0;i<7;i++) cout<<a[(i+6)%7]<<" "; cout<<endl; return 0; }
Python3 解法, 执行用时: 49ms, 内存消耗: 4872K, 提交时间: 2022-07-06 13:41:46
import datetime N = int(input()) L = [0] * 8 for i in range(1900, 1900 + N): for j in range(1, 13): a = datetime.date(i, j, 13) L[a.isocalendar()[2]] += 1 B = L[-2:] + L[1:-2] print(" ".join(map(str, B)))