
[USACO]黑色星期五
发布日期:2021-05-07 09:31:17
浏览次数:18
分类:精选文章
本文共 1155 字,大约阅读时间需要 3 分钟。
题目描述
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#includeint judgeyear(int n);//计算一年多少天int main(){ int b[13]={0,31,60,91,121,152,182,213,244,274,305,335}; int a[13]={0,31,59,90,120,151,181,212,243,273,304,334};//只用存放11个月的天数,进行累加天数 int c[8]={0}; int n,i,j,k,sum=0,threeteen; scanf("%d",&n); for(i=1900;i<1900+n;i++) { if(judgeyear(i)==366) for(j=0;j<=11;j++) { threeteen=(13+b[j]+sum)%7;//这里的threeteen指的是算出来的星期1至7 c[threeteen]++; } else for(j=0;j<=11;j++) { threeteen=(13+a[j]+sum)%7; c[threeteen]++; } sum=sum+judgeyear(i); } printf("%d %d ",c[6],c[0]); for(k=1;k<=5;k++) { if(k<5) printf("%d ",c[k]); else printf("%d",c[k]); } }int judgeyear(int i){ if(i%400==0||(i%100!=0&&i%4==0)) return 366; else return 365;}
发表评论
最新留言
感谢大佬
[***.8.128.20]2025年03月28日 09时03分21秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
JQuery选择器
2021-05-09
多线程之volatile关键字
2021-05-09
2.2.2原码补码移码的作用
2021-05-09
Java面试题:Servlet是线程安全的吗?
2021-05-09
Java集合总结系列2:Collection接口
2021-05-09
Linux学习总结(九)—— CentOS常用软件安装:中文输入法、Chrome
2021-05-09
比技术还重要的事
2021-05-09
linux线程调度策略
2021-05-09
软中断和实时性
2021-05-09
Linux探测工具BCC(可观测性)
2021-05-09
流量控制--2.传统的流量控制元素
2021-05-09
SNMP介绍及使用,超有用,建议收藏!
2021-05-09
51nod 1596 搬货物(二进制处理)
2021-05-09
来自星星的祝福(容斥+排列组合)
2021-05-09
Hmz 的女装(递推)
2021-05-09
HDU5589:Tree(莫队+01字典树)
2021-05-09
不停机替换线上代码? 你没听错,Arthas它能做到
2021-05-09
分库分表的 9种分布式主键ID 生成方案,挺全乎的
2021-05-09
MySQL不会丢失数据的秘密,就藏在它的 7种日志里
2021-05-09
Python开发之序列化与反序列化:pickle、json模块使用详解
2021-05-09