python上机题:黑色星期五

编程入门 行业动态 更新时间:2024-10-10 02:23:14

python<a href=https://www.elefans.com/category/jswz/34/1728074.html style=上机题:黑色星期五"/>

python上机题:黑色星期五

题目描述

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天.
年份可以被4整除的为闰年(1992=4*498 所以 1992年是闰年,但是1990年不是闰年)
以上规则不适合于世纪年.可以被400整除的世纪年为闰年,否则为平年.所以,1700,1800,1900和2100年是平年,而2000年是闰年.
请不要预先算好数据! 

输入

一个整数n。

输出

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

样例输入

20

样例输出

36 33 34 33 35 35 34

代码

#coding:utf-8
def get(y,m):if((y%4==0 and y%100!=0) or (y%400==0)):i=1else:i=0if(m==1 or m==3 or m==5 or m==7 or m==8 or m==10 or m==12):return 31elif m==2:if(i==1):return 29else:return 28return 30
# 输入n,限定范围.注意转化为int类型
n = int(input())
while n<0 or n>400:n = input()
a= [0 for i in range(7)]
week=6
for i in range(1900,1900+n):for j in range(1,13):a[week%7]+=1week+=get(i,j)
print(str(a[6])+" "+str(a[0]))
for i in range(1,6):print(str(a[i])+" ")

C++

#include<iostream>
using namespace std;
int get(int y,int m)
{int i;if((y%4==0&&y%100!=0)||(y%400==0)) i=1;else i=0;if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)return 31;else if (m==2){if(i==1)return 29;else return 28;}return 30;
}int main()
{int n,a[7]={0},week=6;cin>>n;for(int i=1900;i<=1900+n-1;i++)for(int j=1;j<=12;j++){a[week%7]++;week+=get(i,j);}cout<<a[6]<<" "<<a[0]<<" ";for(int i=1;i<=5;i++)cout<<a[i]<<" ";return 0;
}

更多推荐

python上机题:黑色星期五

本文发布于:2024-02-14 13:37:58,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1763707.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:上机题   python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!