CODE【VS】1384 黑色星期五(计算某一天是星期几的公式)
来源:互联网 发布:淘宝校园卡 编辑:程序博客网 时间:2024/06/07 18:40
题目描述 Description
13号又是星期五是一个不寻常的日子吗?
13号在星期五比在其他日少吗?为了回答这个问题,写一个程序来计算在n年里13
日落在星期一,星期二......星期日的次数.这个测试从1900年1月1日到
1900+n-1年12月31日.n是一个非负数且不大于400.
这里有一些你要知道的:
请不要预先算好数据!
输入描述 Input Description
一个整数n.
输出描述 Output Description
七个在一行且相分开的整数,它们代表13日是星期六,星期日,星期一.....星期五的次数.
样例输入 Sample Input
20
样例输出 Sample Output
36 33 34 33 35 35 34
数据范围及提示 Data Size & Hint
n是一个非负数且不大于400.
是一个叫基姆拉尔森计算公式:W = (d+2*m+3*(m+1)/5+(y)+(y)/4-(y)/100+(y)/400)%7; 在公式中d表示日期中的日数+1,m表示月份数,y表示年份。
注意:用该公式时,需要把一月和二月看成是上一年的十三月和十四月,公式中的d是日期加1.所以计算结果就是实际的星期,即是:“1”为星期一,“2”为星期二。。。。“0”为星期日。
还有另外一个公式:W = (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7 (其中y是四位数的,如2009。)
注意:该公式中同样要把1月和2月分别当成上一年的13月和14月处理。而且该公式的“0”为星期一,。。。。,“6”为星期日。
附上代码:
#include<cstdio>#include<cstring>#include<cmath>#include<climits>#include<iostream>#include<algorithm>#include<vector>#include<string>#include<map>#include<queue>#include<stack>using namespace std;int main(){ int n; scanf("%d", &n); int week[10] = {0}; for(int i = 1900; i < 1900+n; i++) { for(int j = 1; j < 13; j++) { int m, W; if(j == 1 || j == 2) { m = j+12; W = (14+2*m+3*(m+1)/5+(i-1)+(i-1)/4-(i-1)/100+(i-1)/400)%7; // 基姆拉尔森计算公式 } else { m = j; W = (14+2*m+3*(m+1)/5+(i)+(i)/4-(i)/100+(i)/400)%7; // 基姆拉尔森计算公式 } week[W]++; } } printf("%d %d %d %d %d %d %d\n", week[6], week[0], week[1], week[2], week[3], week[4], week[5]); return 0;}
1 0
- CODE【VS】1384 黑色星期五(计算某一天是星期几的公式)
- 如何计算某一天是星期几?(Zeller公式)
- 如何计算某一天是星期几?(Kim larsson公式)
- 快速计算某一天是星期几-蔡勒公式
- 计算某一日期是星期几的公式(蔡勒公式)
- 求某一天星期几。(基姆拉尔森计算公式)
- 如何计算某一天是星期几?
- 如何计算某一天是星期几!
- 计算某一天是星期几
- 计算某一天是星期几
- 如何计算某一天是星期几?
- 如何计算某一天是星期几?
- JavaScript计算某一天是星期几
- 如何计算某一天是星期几
- 如何计算某一天是星期几?
- 计算某年某月的某一天是星期几的算法
- 计算某年某月的某一天是星期几的算法
- 计算某一天是星期几的算法
- qq授权登录
- JPA, hibernate, jdbcTemplate(建议使用)区别
- Spark数据本地性
- 开源多媒体项目汇总与分析
- RecyclerView 结合 卡片翻转效果
- CODE【VS】1384 黑色星期五(计算某一天是星期几的公式)
- java编程思想读书笔记-第四章初始化和清除
- [JVM]Java内存区域与内存溢出异常
- JS面向对象编程--第二章 数据类型,数组,循环,条件表达式
- HDU 3984 迷宫问题
- 输入年月日时分秒,输出该年月日时分秒的下一秒
- 【机器学习】使用python实现ANN
- 机器学习中关于正则项的一些摘抄
- 三角形面积=SQRT(S*(S-a)*(S-b)*(S-c)) 其中S=(a+b+c)/2,a、b、c为三角形的三边。 定义两个带参的宏,一个用来求area, 另一个宏用来求S。 写程序,在程序中用带