ACM数论----基姆拉尔森计算公式(今天计算星期几)
1.用途:给你年月日,计算今天星期几
2.公式:Week = (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1) mod 7;
其中: d为几号,m为月份,y为年份
3.注:把一月和二月看为是上一年的十三月和十四月!!
4.板子:
int Date(int y,int m,int d)
{if(m==1||m==2){//一二月换算m+=12;y--;}int week = (d + 2*m +3*(m+1)/5 + y + y/4 - y/100 + y/400 + 1)%7;return week;//其中1~7表示周一到周日
}
5.例题HDU6112 今夕何夕
题意:接下来最近的哪一年里的同一个日子,和今天的星期数一样?
代码:
#include <iostream>
#include <cstring>
#include<cstdio>
using namespace std;
int Date(int y,int m,int d)
{if(m==1||m==2){m+=12;y--;}int week = (d + 2*m +3*(m+1)/5 + y + y/4 - y/100 + y/400 + 1)%7;return week;
}
bool judgeYear(int y)
{if((y%4==0&&y%100!=0)||y%400==0)return true;return false;}
int main()
{int T;scanf("%d",&T);int year,month,day;while(T--){scanf("%d-%d-%d",&year,&month,&day);int week = Date(year,month,day);for(int i = year+1;i<10000;i++)//枚举判断{if(judgeYear(year)&&month==2&&day==29&&!judgeYear(i))continue;//注意特别判断第一年闰年2月29第二年不存在的情况!if(week == Date(i,month,day)){printf("%d\n",i);break;}}}return 0;
}
ACM数论----基姆拉尔森计算公式(今天计算星期几)相关推荐
- 算法设计——基姆拉尔森计算公式:计算几月几号是星期几
基姆拉尔森计算公式 W=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%7 其中,W表示算出的星期的数字表示:0:星期日:1:星期一-- d表示日期,m表示月份,y表示年份 ...
- 基姆拉尔森计算公式:计算每个月1号是周几的公式
算法如下:基姆拉尔森计算公式W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7在公式中d表示日期中的日数,m表示月份数,y表示年数.注意:在公式中有个与其他公式不 ...
- 蔡基姆拉尔森计算公式
用一道题目,了解这个公式: 有一个公式可以快速地根据日期计算这一天是星期几,这被称为蔡基姆拉尔森计算公式,假设星期为w,年份为y,月份为m,日期为d. w =(d+2×m+3×(m+1)/5+y+y/ ...
- 根据日期计算星期几 -- 基姆拉尔森计算公式
首先看下百度百科的基姆拉尔森计算公式定义: 基姆拉尔森计算公式 W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7 在公式中d表示日期中的日数,m表示月份数,y ...
- C语言根据日期计算星期——基姆拉尔森计算公式
公式 基姆拉尔森计算公式 w = ( day + 2month +3(month+1)/5 + year + year/4 - year/100 +year/400)%7 根据已知公元1年1月1日星期 ...
- 根据年月日计算是星期几的函数,基姆拉尔森计算公式
算法如下: 基姆拉尔森计算公式 W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7 在公式中d表示日期中的日数,m表示月份数,y表示年数. 注意:在公式中有个与 ...
- HDU 6112 今夕何夕【2017百度之星】【日期模拟计算】【基姆拉尔森计算公式】【蔡勒公式】
今夕何夕 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- C语言根据日期(年,月,日)判断星期几(使用基姆拉尔森计算公式)
C语言根据日期判断星期几(使用基姆拉尔森计算公式) 算法如下: 基姆拉尔森计算公式 W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7 在公式中d表示日期中的日 ...
- 基姆拉尔森计算公式(根据日期判断星期几)
//基姆拉尔森计算公式根据日期判断星期几 void CalculateWeekDay(int y, int m,int d){if(m==1||m==2) m+=12,y--;int iWeek = ...
最新文章
- Android开发实践:如何设置NDK的编译选项
- linux 错误 ttyname failed: Inappropriate ioctl for device 解决方法
- RTEMS 的 AT91SAM9260 移植(5): 调试串口驱动
- OverIQ 中文系列教程【翻译完成】
- 一个简单的fftw3例子:正弦信号的离散傅里叶变换
- 超快的HTML5 2D渲染引擎Pixi.js入门
- linux内核之中断和异常
- Java获取resin端口_线上解决Resin服务响应过慢的几个方法
- 批量修改喜马拉雅下载节目的文件名
- Python和Matlab小波分析
- C专家编程(学习笔记)_第10章 再论指针
- Friendster,linkedin,orkut,liring对SNS的求索 1
- VC中实现GB2312、BIG5、Unicode编码转换
- android octet stream,Java MimetypesFileTypeMap始终在Android模拟器上返回application/octet-stream...
- NI PXI-6221(16路模拟输入)校准小记
- 腾讯、百度、讯飞 语音识别
- 由“功夫熊猫”想到了“侠”
- 信号的概念,认识,处理动作
- 如何删除和添加word的脚注那个横线
- ubuntu18.04添加自定义分辨率