计算某天是星期几-泽勒算法
公式是:
h = (q + 26(m+1)/10 + k + k/4 + j/4 + 5 j)%7
其中:
h是一个星期中的某一天(0为星期六, 1为星期天, 2为星期一, 3为星期二, 4为星期三, 5为星期四, 6为星期五)。
q是某月的第几天。
m是月份, 特别地, 一月和二月分别记为上一年的13月和14月。
j是世纪数(即 year/100)。
k是该世纪的第几年(即year%100)。
注意, 公式中的除法执行的一个整数相除。
下面给出例题以及代码
HDU 2133
What day is it
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 7462 Accepted Submission(s): 2130
One line is one case.
There are three integers, year(0<year<10000), month(0<=month<13), day(0<=day<32).
if the date is illegal, you should output "illegal". Or, you should output what day it is.
代码:
#include<iostream>
#include<cmath>
#include<sstream>
#include<cstdio>
#include<string>
using namespace std;
int runnian(int x)
{
if((x%4==0&&x%100!=0)||x%400==0)
return true;
else
return false;
}
int tianshu(int y, int m)
{
if(m == 2)
{
if(runnian(y))
return 29;
else
return 28;
}
else if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)
return 31;
else
return 30;
}
int zele(int year, int month, int day)
{
int h, m;
int q = day;
if(month >= 3)
m = month;
else
{
m = month + 12;
year--;
}
int j = year/100;
int k = year%100;
h = (q + 26*(m+1)/10 + k + k/4 + j/4 + 5*j)%7;
return h;
}
string Eng[] = {"Saturday", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" };
int main()
{
int y, m, d;
while(cin>>y>>m>>d)
{
if(y < 0||m<=0||d<=0||m>12||tianshu(y, m)<d)
{
cout<<"illegal"<<endl;
continue;
}
cout<<Eng[zele(y, m, d)]<<endl;
}
return 0;
}
计算某天是星期几-泽勒算法相关推荐
- Java黑皮书课后题第3章:**3.21(科学:某天是星期几)泽勒一致性...编写程序,提示用户输入年、月、该月的哪一天,显示它是一周中的星期几
**3.21(科学:某天是星期几)泽勒一致性...编写程序,提示用户输入年.月.该月的哪一天,显示它是一周中的星期几 题目 题目概述 运行示例 破题 代码 题目 题目概述 **3.21(科学:某天是星 ...
- Java黑皮书课后题第6章:**6.34(打印日历)编程练习题3.21使用Zeller一致性原理来计算某天是星期几,使用Zeller的算法简化程序清单6-12以获得每月开始的第一天是星期几
6.34(打印日历)编程练习题3.21使用Zeller一致性原理来计算某天是星期几,使用Zeller的算法简化程序清单6-12以获得每月开始的第一天是星期几 题目 题目描述 编程练习题3.21的Zel ...
- c++ 计算某个日期是星期几,判断某年某月一号是星期几
第一种方法 基姆拉尔森计算公式 W = (d + 2 * m + 3 * (m + 1) / 5 + y + y / 4 - y / 100 + y / 400) mod 7 基姆拉尔森计算公式 W ...
- c语言万年历输入年月日星期几,菜鸟写的一个万年历(计算输入日期是星期几)...
菜鸟写的一个万年历(计算输入日期是星期几) #include #include int statistic(int a) { int i,t=0; for(i=1;i if(i%4==0) { if( ...
- 简单快捷计算本月第一天星期几、本月有多少天、上一个月的最后一天是几号
今天偶然在vue2/nodejs视频中看到一个计算"本月第一天星期几.本月有多少天.上一个月的最后一天是几号" 最简便最快捷的方法. 如果自己写,就很容易要判断闰年问题,那就非常复 ...
- DTMF双音频信令检测,基于Goertzel(戈泽尔算法),FPGA实现
目录 1.引言 2.细节介绍 3.DTMF双音频信号的产生 4.DTMF双音频信号的检测 4.1(Goertzel)戈泽尔算法的使用 4.2戈泽尔算法的详细计算过程 4.3计算的优化 4.3.1时间复 ...
- JavaScript:实现计算二维平面上两点之间的距离算法(附完整源码)
JavaScript:实现计算二维平面上两点之间的距离算法 /*Calculate the mathematical properties involving coordinatesCalculate ...
- C++二叉树计算带权路径长度(WPL)的算法
二叉树计算带权路径长度(WPL)的算法 更多内容请访问点击我的主页 题目 : 二叉树的带权路径长度是二叉树中所有叶子结点的带权路径长度之和.给定二叉链表的存储的结点结构为 left weight ri ...
- 快速计算某一天是星期几-蔡勒公式
以下内容转自百度百科. w:星期: w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六 c:世纪(年份前两位数) y:年(后两位数) m:月(m大于等于3 ...
- c语言求某年某月1日是星期几,蔡勒(Zeller)公式:根据日期推算是星期几
Zeller's Congruence: w=y + [y/4] + [c/4] - 2c + [26(m+1)/10] + d - 1 公式中的符号含义如下: w:星期: w对7取模得:0-星期日, ...
最新文章
- DNS原理及其解析过程
- 2014/3/16 长沙多校(第三次)
- NSArray 简单细说
- 成功解决⑧NVIDIA安装程序无法继续 此NVIDL驱动程序与此Windows版本不兼容。 此图形驱动程序无法找到兼吝的图形硬件。
- java实现二分法递归_Java递归实现二分法
- 用c语言链表编写便利店零售系统,链表实现多项式求和(C语言)
- WSGI、uwsgi和uWSGI
- MySQL连接查询的分类
- Maven学习笔记(2) --mvn archetype:create 说明
- 【操作系统】虚拟化CPU、Memory,共享文件
- WPF 绑定StaticResource到控件的方法
- SaaS的行业概述及发展现状
- 15岁中国学生斩获苹果WWDC奖学金:写代码只用了2个周末
- node环境变量_实际使用Node环境变量的方法如下
- url参数拼接 php,PHP解析url并得到url参数方法总结
- php生成网页桌面快捷方式
- 深入理解java内置锁(synchronized)和显式锁(ReentrantLock)
- 如何查看xbox账号所在服务器,Xbox账号绑定教程
- 常用ftp、tftp服务器软件
- 一文读懂各种分布式机器学习框架的区别与联系