woyuan @ 2024-08-28 11:41:57
#include<bits/stdc++.h>
using namespace std;
int main()
{
int sj=10,s,u,y;
cin>>s>>u;
sj=sj+s/u;
y=480-sj;
if(sj>=480)
y=1440+y;
sj=y/60;
y=y%60;
if(y>9&&sj>9)
cout<<sj<<":"<<y-1;
else if(y<9&&sj>9)
cout<<sj<<":"<<0<<y-1;
else if(y<9&&sj<9)
cout<<0<<sj<<":"<<0<<y-1;
else
cout<<0<<sj<<":"<<y-1;
return 0;
}
by CCF___NOI @ 2024-08-28 12:01:43
@woyuan 是不是没判断前一天??? 我一次过也不知道9测试点数据是啥
#include<bits/stdc++.h>
using namespace std;
long long n,m,s,t,v;
int main(){
cin>>s>>v;
t=ceil(s*1.0/v)+10;
if(t<=480)
printf("%02d:%02d",(480-t)/60,(480-t)%60);
else
printf("%02d:%02d",(1440+480-t)/60,(1440+480-t)%60);
return 0;
}
by CCF___NOI @ 2024-08-28 12:04:08
@woyuan 少用CIN和COUT,太慢 多用PRINTF,很快; 不用endl,用"\0";
by maxwr168 @ 2024-08-28 12:06:06
#include<bits/stdc++.h>
using namespace std;
int main() {
int s, v, t, h, m;
cin >> s >> v;
t = s / v + 10;
if (s % v != 0)
t += 1;
h = 8 - t / 60;
m = 0 - t % 60;
if (m < 0) {
m += 60;
h--;
}
if (h < 0)
h += 24;
printf("%02d:%02d", h, m);
return 0;
}
by mengmeng123456 @ 2024-08-28 12:08:59
我好像找到一个hack数据
输入:10000 10000
我过了的程序输出的是07:49
我用你程序是07:48
by maxwr168 @ 2024-08-28 12:11:39
@woyuan
你代码没有判断剩下的时间是否大于一天,如果大于一天需要减去一天的时间,所以必须向上取整,不然行走时间就会少,所以没过。(求关)
by mengmeng123456 @ 2024-08-28 12:19:29
@woyuan 最后的输出可以用
printf("%02d:%02d",[变量名],[变量名]);
%02d的意思就是输出两位整数,不足两位可以自动补零
by mengmeng123456 @ 2024-08-28 12:23:05
@woyuan 你那个y为什么要减1呢
by mengmeng123456 @ 2024-08-28 12:36:09
我找到你错的地方了,
sj=sj+s/u
这一行,s/u应该向上取整,因为比如说样例一,yyy的速度是99米每分钟,距离学校100米第一分钟只能走99米,离学校还有1米,这一米我们要按一分钟处理,向上取整可以用函数
ceil()
还有s和u是整数类型,没有转换的情况下,s/u是自动向下取整,所以要先强制转换成小数形式,可以写成
s*1.0/u
这样就可以完成强制转换了
by mengmeng123456 @ 2024-08-28 13:11:01
差点忘了,y-1要改成y
by woyuan @ 2024-08-29 11:32:12
@mengmeng123456 改了之后只有9测试点ac 为什么?help me