解题报告:输入一个年月日,让你求出那一天是星期几,但是做这题之前必须先了解一点历史。首先在1582年之前,判断是否是闰年的标准是只要能被四整除就是闰年,

然后在1752年9月2号的后的11天被抹去了,也就是说1752年9月2号的第二天不是9月3号,而是9月14号。然后知道这些这题就好做了,我的做法是把1年1月1号作为

参考日,那天是星期天,然后计算输入的日子与那天差多少天就可以判断出输入的日子是星期几了。

 #include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std; int m[][] = {
{,,,,,,,,,,,,},
{,,,,,,,,,,,,},
};
char xingqi[][] = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
char yue[][] = {"","January","February","March","April","May","June","July","August","September","October","November","December"}; int judge(int year) //判断是否为润年
{
if(year > )
return year % == && (year % != || year % == );
else return year % == ;
} int num_day(int mon,int day,int year) //以公元1年1月1日为参考点,求到输入的日期为止已经过去的天数
{
int tot = ;
for(int i = ;i < year;++i)
tot += (judge(i)? :);
for(int i = ;i < mon;++i)
tot += m[judge(year)][i];
tot += day;
return tot;
}
int panduan(int mon,int day,int year) //判断输入的日期是否合法
{
if(mon <= || day <= || year <= )
return ;
if(mon > )
return ;
if(day > m[judge(year)][mon])
return ;
return ;
} int main()
{
int day,mon,year;
while(scanf("%d%d%d",&mon,&day,&year))
{
if(day == mon && mon == year && year == )
break;
int tot_d = num_day(mon,day,year);
if(tot_d > )
tot_d -= ;
tot_d -= ;
if(panduan(mon,day,year))
printf("%s %d, %d is a %s\n",yue[mon],day,year,xingqi[tot_d % ]);
else printf("%d/%d/%d is an invalid date.\n",mon,day,year);
}
return ;
}

HDU 1308 What Day Is It?(模拟,日期)的更多相关文章

  1. HDU 1308 What Day Is It?(模拟题)

    解题报告:输入一个年月日,让你求出那一天是星期几,但是做这题之前必须先了解一点历史.首先在1582年之前,判断是否是闰年的标准是只要能被四整除就是闰年, 然后在1752年9月2号的后的11天被抹去了, ...

  2. HDU 5102 The K-th Distance(模拟)

    题意:输入一棵树,输出前k小的点对最短距离dis(i,j)的和. 模拟,官方题解说得很清楚了.不重复了. http://bestcoder.hdu.edu.cn/ 需要注意的是,复杂度要O(n+k), ...

  3. HDU 5805 NanoApe Loves Sequence (模拟)

    NanoApe Loves Sequence 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5805 Description NanoApe, the ...

  4. HDU 4708 Rotation Lock Puzzle(模拟)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4708 题目大意:给定一个方形矩阵,边长为3-10的奇数.每一圈的数字可以沿着顺时针方向和逆时针方向旋转 ...

  5. HDU 5968 异或密码 【模拟】 2016年中国大学生程序设计竞赛(合肥)

    异或密码 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Problem Des ...

  6. HDU 5949 Relative atomic mass 【模拟】 (2016ACM/ICPC亚洲区沈阳站)

    Relative atomic mass Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Oth ...

  7. HDU 5929 Basic Data Structure 【模拟】 (2016CCPC东北地区大学生程序设计竞赛)

    Basic Data Structure Time Limit: 7000/3500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Oth ...

  8. HDU 5922 Minimum’s Revenge 【模拟】 (2016CCPC东北地区大学生程序设计竞赛)

    Minimum's Revenge Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others ...

  9. HDU 4814 Golden Radio Base 小模拟

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=4814 题意:黄金比例切割点是,如今要求把一个10进制的的数转化成一个phi进制的数,而且不能出现'11'的 ...

随机推荐

  1. Python数据分析(一)pandas数据切片

    1.获取行或列数据 loc——通过行标签索引行数据 iloc——通过行号索引行数据 ix——通过行标签或者行号索引行数据(基于loc和iloc 的混合) 同理,索引列数据也是如此! import pa ...

  2. [bzoj] 1257 余数之和sum || 数论

    原题 给出正整数n和k,计算j(n, k)=k mod 1 + k mod 2 + k mod 3 + - + k mod n的值,其中k mod i表示k除以i的余数. \(\sum^n_{i=1} ...

  3. bzoj 1977 洛谷P4180 严格次小生成树

    Description: 给定一张N个节点M条边的无向图,求该图的严格次小生成树.设最小生成树边权之和为sum,那么严格次小生成树就是边权之和大于sum的最小的一个 Input: 第一行包含两个整数N ...

  4. HDU 5655 四边形判断

    CA Loves Stick Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) ...

  5. idea使用(一)

    基本上正式开发的常用工具基本都集成了,而且基本都在你非常容易触到的位置.说说我比较常用的: 1.ant 你懂的 2.maven你也懂的 3.SVN相比之下,IDEA的SVN的提交提供了更多的选项和功能 ...

  6. MySQL中大于等于小于等于的写法

    由于在mybatis框架的xml中<= , >=解析会出现问题,编译报错,所以需要转译 第一种写法: 原符号 < <= > >= & ' " 替换 ...

  7. leetcode-501. Find Mode in Binary Search Tree

    Given a binary search tree (BST) with duplicates, find all the mode(s) (the most frequently occurred ...

  8. [POJ2954&POJ1265]皮克定理的应用两例

    皮克定理: 在一个多边形中.用I表示多边形内部的点数,E来表示多边形边上的点数,S表示多边形的面积. 满足:S:=I+E/2-1; 解决这一类题可能运用到的: 求E,一条边(x1,y1,x2,y2)上 ...

  9. opencv_人脸检测、模型训练、人脸识别

    人脸检测.模型训练.人脸识别 2018-08-15 今天给大家带来一套人脸识别一个小案例,主要是帮助小伙伴们解决如何入门OpenCV人脸识别的问题,现在的AI行业比较火热,AI技术的使用比较广泛.就拿 ...

  10. mobius反演讲解

    mobius反演的基本形式为,假设知道函数F(x)=Σf(d) d|x,那么我们可以推出f(x)=Σmiu(d)*F(x/d) d|x,另一基本形式为假设知道函数F(x)=Σf(d) x|d,那么我们 ...