今年刚打了 GESP 一级,这题我用了10分钟才做出来的。
开始我本想用模运算之类的技巧来做,因为这样简单一些,但发现想不出来。
最后我用了唯一的办法:暴力、打表。
开始我用了一大堆 if 来写:
#include <bits/stdc++.h>
#define int long long
using namespace std;
signed main(){
int h,m,s,k;
cin>>h>>m>>s>>k;
int cnt = s+k;
if(cnt>=60){
cnt-=60;
m+=1;
}else if(m>=60){
m-=60;
h+=1;
}
}
cout<<h<<' '<<m<<' '<<cnt;
return 0;
}
但……7.5分。
差了17.5。
随后我想到可以套个 for 循环,这样无论有多大,都没问题了。
AC CODE:
#include <bits/stdc++.h>
#define int long long
using namespace std;
signed main(){
int h,m,s,k;
cin>>h>>m>>s>>k;
int cnt = s+k;
for(int i=1;i<=k;i++){
if(cnt>=60){
cnt-=60;
m+=1;
}else if(m>=60){
m-=60;
h+=1;
}
}
cout<<h<<' '<<m<<' '<<cnt;
return 0;
}