写复杂了那些if语句讲的大概是一样的内容就是不知道哪里出问题了感觉是前面

P5707 【深基2.例12】上学迟到

感觉会吓走你们哈哈哈 只有70分
by Czh116489 @ 2022-11-03 11:39:09


@[Czh116489](/user/764793) 不用那么麻烦,可以用printf格式化输出
by lht20090314 @ 2022-11-03 11:54:57


``` #include<bits/stdc++.h> using namespace std; int sm,vh,h=7,m=50; int main(){ cin>>sm>>vh; if(sm%vh==0) sm=sm/vh; else sm=sm/vh+1; vh=sm/60; sm%=60; m-=sm; while(m<0){ m+=60; h--; } h-=vh; while(h<0) h+=24; if(h<10) cout<<0; cout<<h<<":"; if(m<10) cout<<0; cout<<m; } ``` 比较简洁 @[Czh116489](/user/764793)
by OoHappyoO @ 2022-11-03 12:03:30


@[lht20090314](/user/728458) 确实是吃完饭再试一下我也觉得很好用不用那么多if来if去
by Czh116489 @ 2022-11-03 12:05:09


@[OoHappyoO](/user/191252) 待会研究一下感谢了
by Czh116489 @ 2022-11-03 12:05:29


@[Czh116489](/user/764793) 还可以再简化,其实思路就是先把单位统一转化成分钟,然后再计算,这样就会方便很多 ```cpp #include <cstdio> #include <cmath> using namespace std; int main() { int s, v; scanf("%d%d", &s, &v); // ceil()的输入和输出都是 double 类型 int t_walk = ceil(1.0 * s / v) + 10; // 两次类型转换注意到了吗 int from_zero = 60 * (24 + 8) - t_walk; // 计算到前一天0点的时间 int hh = (from_zero / 60) % 24; // 计算小时 int mm = from_zero % 60; // 计算分钟 printf("%02d:%02d\n", hh, mm); // 输出两位,用0补齐 return 0; } ```
by lht20090314 @ 2022-11-03 13:25:14


|