作者 张志梅
单位 青岛大学
老师说:“每日一题,必将成功。” 而小明遵从“三天打鱼两天晒网”的古训。小兰来找小明出去玩,小明说,那要看看今天我是打鱼还是晒网。勤奋的你帮小明算算吧?
输入格式:
输入多行,每行一个日期,第一行的日期是小明开始“三天打鱼两天晒网”的日子,接下来每一行日期是小兰来找小明出去玩的日子。日期格式如“2024-2-18”。
输出格式:
对每一个小兰找小明出去玩的日子,输出一行“Fishing”或“Drying”,分别代表小明今天打鱼或晒网。
输入样例:
2024-2-16
2024-2-18
2024-3-20
输出样例:
Fishing
Drying
一道很经典的日期题,只不过要注意日期问题。
在算好日期后,0~2是打鱼,其余是晒网。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define endl "\n"
ll n,m;
ll yue[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
bool run(ll x){
return x%4 == 0 && x%100 != 0 || x%400 == 0;
}
ll found(ll x ,ll y ,ll z){
ll sum=z;
for(ll i = 0 ; i < x ; i ++){
if(run(i))sum+=366;
else sum += 365;
}
for(ll i = 1 ; i < y ; i ++)sum+=yue[i];
if(run(x) && y > 2)sum++;
return sum;
}
void solve(){
ll x,y,z,bz=0,a,b,c;
char e;
cin >> a >> e >> b >> e >> c;
while(cin >> x >> e >> y >> e >> z){
bz=found(a,b,c);
bz=found(x,y,z)-bz;
bz%=5;
if(bz < 3)cout << "Fishing" << endl;
else cout << "Drying" << endl;
}
return;
}
int main(){
ll t=1;//cin >> t;
while(t--)solve();
return 0;
}
网