蓝桥杯 算法提高 日期计算

简介:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
   算法提高 日期计算 
时间限制:1.0s   内存限制:256.0MB
     
问题描述
  已知2011年11月11日是星期五,问YYYY年MM月DD日是星期几?注意考虑闰年的情况。尤其是逢百年不闰,逢400年闰的情况。
输入格式
  输入只有一行
  YYYY MM DD
输出格式
  输出只有一行
  W
数据规模和约定
  1599 <= YYYY <= 2999
  1 <= MM <= 12
  1 <= DD <= 31,且确保测试样例中YYYY年MM月DD日是一个合理日期
  1 <= W <= 7,分别代表周一到周日
样例输入
2011 11 11
样例输出
5

c++:

复制代码
 1 #include<iostream> 
 2 #include<cstring>
 3 #include<cstdio>
 4 using namespace std;
 5 
 6 int a[2][13]={{0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}};
 7 
 8 bool isRun(int year){//判断是否为闰年
 9     if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
10         return true;
11     return false;
12 }
13 
14 int calDay(int year){
15     int index = 0;
16     if(!isRun(year)) index = 1;
17     int tot = 0;
18     for(int i=1; i<=12; ++i)
19         tot += a[index][i];
20     return tot;
21 }
22 
23 int Day(int y, int m, int d){//计算从0年0月0日到y年m月d日的时间天数 
24     int ans = 0;
25     for(int i=1; i<y; ++i)
26         ans+=calDay(i);
27     int index = 0;
28     if(!isRun(y)) index = 1;
29     for(int i=1; i<m; ++i)
30         ans += a[index][i];
31     ans += d;
32     return ans;
33 }
34 
35 int main(){
36     int y, m, d;
37     cin>>y>>m>>d;
38     int diff = Day(y, m, d) - Day(2011, 11, 11);//已知2011-11-11这一天是星期5 
39     if(diff > 0) cout<<(4+diff%7)%7+1<<endl;
40     else{
41         for(int i=1; i<=7; ++i)
42             if((i-1 + -diff%7)%7 + 1 == 5){
43                 cout<<i<<endl;
44                 break;
45             }
46     }
47     return 0;
48 }









本文转自 小眼儿 博客园博客,原文链接:http://www.cnblogs.com/hujunzheng/p/4395845.html,如需转载请自行联系原作者
目录
相关文章
|
1月前
|
机器学习/深度学习 算法
递归算法题练习(数的计算、带备忘录的递归、计算函数值)
递归算法题练习(数的计算、带备忘录的递归、计算函数值)
|
1月前
|
算法 Java
算法:Java计算二叉树从根节点到叶子结点的最大路径和
算法:Java计算二叉树从根节点到叶子结点的最大路径和
|
2月前
|
机器学习/深度学习 算法 Java
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-476 计算质数和
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-476 计算质数和
30 0
|
2月前
|
Java C语言 C++
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-465 计算税额
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-465 计算税额
24 0
|
2月前
|
Java C语言 C++
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-460 计算和差
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-460 计算和差
18 0
|
2月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-246 算法训练 猴子吃包子
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-246 算法训练 猴子吃包子
35 2
|
2月前
|
Java C语言 C++
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-156 表达式计算
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-156 表达式计算
23 0
|
2月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-48 算法训练 关联矩阵
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-48 算法训练 关联矩阵
37 0
|
2月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-42 算法训练 送分啦
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-42 算法训练 送分啦
35 0
|
2月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-8 算法训练 操作格子 线段树
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-8 算法训练 操作格子 线段树
29 0