hdu6102 2017"百度之星"初赛(A)1005今夕何夕(模拟)

来源:互联网 发布:阿里云服务器地域选择 编辑:程序博客网 时间:2024/06/06 02:45

今夕何夕 Accepts: 1345 Submissions: 5533
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
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
直接模拟即可。。。注意一下判断闰年。

#include <bits/stdc++.h>char s[100];int tst;inline bool judge(int x){    return x%100?x%4==0:x%400==0;}int main(){//  freopen("a.in","r",stdin);    scanf("%d",&tst);    while(tst--){        scanf("%s",s+1);int count=0;        int x=(s[1]-'0')*1000+(s[2]-'0')*100+(s[3]-'0')*10+s[4]-'0';        if(s[6]=='0'&&s[7]=='2'&&s[9]=='2'&&s[10]=='9'){            x+=1;judge(x)?count+=2:count+=1;            while(!judge(x)||count%7!=0){x+=1;judge(x)?count+=2:count+=1;}         }        else if(s[6]=='0'&&s[7]<='2'){            judge(x)?count+=2:count+=1;x+=1;            while(count%7!=0){judge(x)?count+=2:count+=1;x+=1;}        }        else{            x+=1;judge(x)?count+=2:count+=1;            while(count%7!=0){x+=1;judge(x)?count+=2:count+=1;}        }        printf("%d\n",x);       }    return 0;}
阅读全文
0 0
原创粉丝点击