A - Calandar(ZOJ 4113)
Time Limit : 1 Second Memory Limit : 65536 KB
Source : 第十届山东省ACM省赛
Problem Link : ZOJ 4113
Author : Houge Date : 2019-5-18
题目大意:
有一个神奇的星球,在那里,一年有12个月,每月都有30天。并且在那个星球上一周只有五天。给你今天的日期和星期,问你一个目标日期是星期几。
分析:
签到题之一,仔细思考便容易发现所要求的日期是星期几和月份根本没有关系(一周五天,每个月都是30天,一个月正好是6次循环),和年份就更没有关系了。只要求出两个日的关系,再输出对应的星期即可。
代码:
1 #include <bits/stdc++.h>
2
3 using namespace std;
4
5 int main()
6 {
7 int t;
8 scanf("%d",&t);
9 while(t--)
10 {
11 int crrday,disday,temp;
12 string cday;
13 scanf("%*d%*d%d",&crrday); cin>>cday;
14 scanf("%*d%*d%d",&disday);
15
16 if(cday=="Monday") temp=0;
17 if(cday=="Tuesday") temp=1;
18 if(cday=="Wednesday") temp=2;
19 if(cday=="Thursday") temp=3;
20 if(cday=="Friday") temp=4;
21
22 if(crrday<=disday) temp=(temp+(disday-crrday)%5)%5;
23 else temp=(temp+5-(crrday-disday)%5)%5;
24 //cout<<"Test temp : "<<temp<<endl;
25 if(temp==0) printf("Monday\n");
26 if(temp==1) printf("Tuesday\n");
27 if(temp==2) printf("Wednesday\n");
28 if(temp==3) printf("Thursday\n");
29 if(temp==4) printf("Friday\n");
30 }
31 return 0;
32 }