1. 日期小助手
题意
找到下一次母亲节或者父亲节,输出日期和年份。
转载:原文链接
就算是大模拟,也能看出来能力高下。
原博文作者:nazike_嘉娜
教训
大模拟也是要找规律的,不着急写,大家写大模拟都费劲。
#include<bits/stdc++.h>
using namespace std;
int main(){
int t;
cin>>t;
while(t--){
int y,m,d;
cin>>y>>m>>d;
//求父亲节母亲节日期
int mo=14-((y-2000)+(y-2000)/4)%7;
int fa=21-((y-1998)+(y-2000)/4+1)%7;
if(y==2100){
mo=9;fa=20;
}
if(m>=1&&m<=4){
printf("Mother's Day: May %dth, %d\n",mo,y);continue;
}
if(m==5){
if(d<mo)
printf("Mother's Day: May %dth, %d\n",mo,y);
else{
if(fa!=21)
printf("Father's Day: June %dth, %d\n",fa,y);
else
printf("Father's Day: June %dst, %d\n",fa,y);
}
continue;
}
if(m==6){
if(d<fa){
if(fa!=21)
printf("Father's Day: June %dth, %d\n",fa,y);
else
printf("Father's Day: June %dst, %d\n",fa,y);
}
else{
if(y==2100)
mo=8;
else if(y==2099)
mo=9;
else
mo=14-((y+1-2000)+(y+1-2000)/4)%7;
printf("Mother's Day: May %dth, %d\n",mo,y+1);
}
continue;
}
if(m>=7&&m<=12){
if(y==2100)
mo=8;
else if(y==2099)
mo=9;
else
mo=14-((y+1-2000)+(y+1-2000)/4)%7;
printf("Mother's Day: May %dth, %d\n",mo,y+1);
}
continue;
}
return 0;
}