题目来源:点击这里
题目描述
作为一个关心父母的孩子,Compute 会在每年的母亲节和父亲节为父母准备礼物。可是粗心的他却不记得它们的具体日期了。
已知:母亲节在每年 5 月的第 2 个周日;父亲节在每年 6 月的第 3 个周日。
现在你需要告诉他,下一个(不包括当天)母亲节或父亲节是在什么时候。
输入描述:
第一行包含一个整数 T (T \leq 100T≤100),表示测试数据的组数。
对于每组数据,包含三个整数 y, m, d,中间以空格分隔,分别表示今天的年、月、日。
输入保证是一个在公元 2000 年 1 月 1 日 到 2100 年 12 月 31 日间的合法日期。
输出描述:
对于每组数据,在一行输出下一个需要准备礼物的节日和日期。格式参考样例输出。
输入样例:
7
2000 1 1
2001 1 1
2002 1 1
2003 1 1
2020 1 1
2020 5 10
2020 6 21
输出样例:
Mother's Day: May 14th, 2000
Mother's Day: May 13th, 2001
Mother's Day: May 12th, 2002
Mother's Day: May 11th, 2003
Mother's Day: May 10th, 2020
Father's Day: June 21st, 2020
Mother's Day: May 9th, 2021
代码如下:
#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
struct node1{
int a,b,c;
}kkk[210];
int main() {
int ttt,j=0,muhao=14,fuhao=18;
int s,t,r;
for(int i=0;i<=100;i++){
kkk[j].a=i+2000;
kkk[j].b=5;
kkk[j].c=muhao;
if( (i+1)%4==0 && i!=99) muhao-=2;
else muhao-=1;
if(muhao<=7) muhao+=7;
j++;
kkk[j].a=i+2000;
kkk[j].b=6;
kkk[j].c=fuhao;
if( (i+1)%4==0 && i!=99) fuhao-=2;
else fuhao-=1;
if(fuhao<=14) fuhao+=7;
j++;
}
scanf("%d",&ttt);
/*for(int i=0;i<j;i++){
printf("%d %d %d\n",kkk[i].a,kkk[i].b,kkk[i].c);
}*/
for(int i=0;i<ttt;i++){
scanf("%d %d %d",&s,&t,&r);
//printf("%d %d %d\n",s,t,r);
int cnt=0;
for(int k=0;k<j;k++){
if(s<kkk[k].a){
cnt=1;
}
else {
if(s==kkk[k].a){
if(t<kkk[k].b) cnt=1;
else {
if(t==kkk[k].b){
if(r<kkk[k].c){
cnt =1;
}
else cnt=0;
}
else cnt=0;
}
}
else cnt=0;
}
if(cnt) {
if(kkk[k].b%2){//mu
printf("Mother's Day: May ");
if(kkk[k].c==1||kkk[k].c==21||kkk[k].c==31)
printf("%dst, ",kkk[k].c);
else if(kkk[k].c==2||kkk[k].c==22){
printf("%dnd, ",kkk[k].c);
}
else if(kkk[k].c==3||kkk[k].c==23){
printf("%drd, ",kkk[k].c);
}
else printf("%dth, ",kkk[k].c);
printf("%d\n",kkk[k].a);
}
else{//fu
printf("Father's Day: June ");
if(kkk[k].c==1||kkk[k].c==21||kkk[k].c==31)
printf("%dst, ",kkk[k].c);
else if(kkk[k].c==2||kkk[k].c==22){
printf("%dnd, ",kkk[k].c);
}
else if(kkk[k].c==3||kkk[k].c==23){
printf("%drd, ",kkk[k].c);
}
else printf("%dth, ",kkk[k].c);
printf("%d\n",kkk[k].a);
}
break;
}
}
}
return 0;
}