hdu 6112 今夕何夕(模拟)

今夕何夕

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 484    Accepted Submission(s): 151

Problem Description

今天是2017年8月6日,农历闰六月十五。

小度独自凭栏,望着一轮圆月,发出了“今夕何夕,见此良人”的寂寞感慨。

为了排遣郁结,它决定思考一个数学问题:接下来最近的哪一年里的同一个日子,和今天的星期数一样?比如今天是8月6日,星期日。下一个也是星期日的8月6日发生在2023年。

小贴士:在公历中,能被4整除但不能被100整除,或能被400整除的年份即为闰年。

Input

第一行为T,表示输入数据组数。
每组数据包含一个日期,格式为YYYY-MM-DD。
1 ≤ T ≤ 10000
YYYY ≥ 2017
日期一定是个合法的日期

Output

对每组数据输出答案年份,题目保证答案不会超过四位数。

Sample Input

3

2017-08-06

2017-08-07

2018-01-01

Sample Output

2023

2023

2024

Source

2017"百度之星"程序设计大赛 - 初赛(A)

傻逼题 开始一直算

直接模拟就可以了  不小心把c=1写成c==1

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #include<cstring>
 5 #include<cstdlib>
 6 #include<string.h>
 7 #include<set>
 8 #include<vector>
 9 #include<queue>
10 #include<stack>
11 #include<map>
12 #include<cmath>
13 typedef long long ll;
14 typedef unsigned long long LL;
15 using namespace std;
16 const double PI=acos(-1.0);
17 const double eps=0.0000000001;
18 const int INF=1e9;
19 const int N=1000+100;
20 int check(int x){
21     if(x%4==0&&x%100!=0)return 1;
22     if(x%400==0)return 1;
23     return 0;
24 }
25 int fun(int x){
26     if(x==1||x==3||x==5||x==7)return 1;
27     if(x==8||x==10||x==12)return 1;
28     return 0;
29 }
30 int main(){
31     int t;
32     scanf("%d",&t);
33     while(t--){
34         int y,m,d;
35         scanf("%d-%d-%d",&y,&m,&d);
36         int a=y,b=m,c=d;
37         for(int i=1;i<=10000000;i++){
38             c=c+1;
39             if(check(a)&&b==2&&c==30){
40                 b++;
41                 c=1;
42             }
43             else if(check(a)==0&&b==2&&c==29){
44                 b++;
45                 c=1;
46             }
47             else if(fun(b)==1&&c==32){
48                 b++;
49                 c=1;
50             }
51             else if(fun(b)==0&&c==31){
52                 b++;
53                 c=1;
54             }
55             if(b==13){
56                 a++;
57                 b=1;
58             }
59             //cout<<a<<" "<<b<<" "<<c<<endl;
60             if(b==m&&c==d&&i%7==0){
61                 cout<<a<<endl;
62                 break;
63             }
64         }
65     }
66 }
时间: 2024-10-07 20:12:23

hdu 6112 今夕何夕(模拟)的相关文章

HDU 6112 今夕何夕 (这也要写??)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6112 题目大意:给你一个合法的年月日,问下次同样是这个月日,星期一样的最早是哪年? 题目保证不超过四位数. 解题思路:讲道理真的需要吗? 过一年+365天,如果是闰年+366天,对7取余为0了就OK了.不过判断地方稍微有点麻烦,需要考虑今天是2 29,小于2 29和大于的情况,也不复杂(那我咋没写出来???) 代码: 1 int y, m, d; 2 3 bool isleap(int x){ 4

hdu 6112 今夕何夕

今夕何夕 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 690    Accepted Submission(s): 211 Problem Description 今天是2017年8月6日,农历闰六月十五. 小度独自凭栏,望着一轮圆月,发出了"今夕何夕,见此良人"的寂寞感慨. 为了排遣郁结,它决定思考一个数学问题:接下来最近

【Zeller公式计算星期几】HDU 6112 今夕何夕

acm.hdu.edu.cn/showproblem.php?pid=6112 [思路] 公式计算即可,注意特判2月29号 Zeller公式里,计算出的week不能直接模7,要保证week是正数 [AC] 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<string> 5 #include<algorithm> 6 #include<cmath&g

HDU 6112 今夕何夕 数论

今夕何夕 Description 今天是2017年8月6日,农历闰六月十五.小度独自凭栏,望着一轮圆月,发出了"今夕何夕,见此良人"的寂寞感慨.为了排遣郁结,它决定思考一个数学问题:接下来最近的哪一年里的同一个日子,和今天的星期数一样?比如今天是8月6日,星期日.下一个也是星期日的8月6日发生在2023年.小贴士:在公历中,能被4整除但不能被100整除,或能被400整除的年份即为闰年. Input 第一行为T,表示输入数据组数.每组数据包含一个日期,格式为YYYY-MM-DD.1 ≤

hdu 4964 Emmet(模拟)

题目链接:hdu 4964 Emmet 题目大意: 给定语句,按照语法翻译并输出. 解题思路:用递归模拟文法分析,主要注意几点: 括号并且的情况:(fuck)(you) 括号嵌套的情况:((fuck.you)) 优先输出id,然后是class(题目中有说) 乘法的部分:fuck*2>you*3 (每次执行fuck时,you的地方同样被执行了3次) 其他跑出样例基本没问题,具体看代码. #include <cstdio> #include <cstring> #include

HDU 4891 简单模拟

The Great Pan Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1035    Accepted Submission(s): 355 Problem Description As a programming contest addict, Waybl is always happy to take part in vario

hdu 4194(模拟)

符合三者之一的则不满足规定,求不满足规定的个数.直接模拟. 1.被同一个人审查多次 2.被和自己同一组织的审查 3.被审查次数不等于k 代码如下: 1 /************************************************** 2 * Author : xiaohao Z 3 * Blog : http://www.cnblogs.com/shu-xiaohao/ 4 * Last modified : 2014-06-28 17:36 5 * Filename :

HDU 4903 (模拟+贪心)

Fighting the Landlords Problem Description Fighting the Landlords is a card game which has been a heat for years in China. The game goes with the 54 poker cards for 3 players, where the “Landlord” has 20 cards and the other two (the “Farmers”) have 1

HDU 2100 Lovekey 模拟26进制

Problem Description XYZ-26进制数是一个每位都是大写字母的数字. A.B.C.-.X.Y.Z 分别依次代表一个0 ~ 25 的数字,一个 n 位的26进制数转化成是10进制的规则如下 A0A1A2A3-An-1 的每一位代表的数字为a0a1a2a3-an-1 ,则该XYZ-26进制数的10进制值就为 m = a0 * 26^(n-1) + a1 * 26^(n-2) + - + an-3* 26^2 + an-2*26 + an-1 一天vivi忽然玩起了浪漫,要躲在学校