如何优雅的将秒换算成-时:分:秒?
如何优雅的将秒换算成-时:分:秒?
思路
先看一下题目,发现就是一道模拟题,但是又一些细节的。
首先是数据的规模:时间不超过 10^18,所以需要开 long long。
然后首先要忽略掉毫秒。
这里普及一个知识:1s = 1000ms
所以需要忽略后面的三位。直接整除 1000 就可以了。
之后就是处理时分秒了:
1.小时
由于只是算一天,24 小时之内,所以要把完整的一天去掉,也就是把对每天的秒数取余,余数就是除了整天剩余的秒数,每天的秒数用24*60*60
来表示(当然你也可以直接算出来结果是86400)。然后用最后一天剩余的秒数整除每小时的秒数60*60
(也就是3600),就是小时值了。
2.分钟
分钟要先对每小时的秒数60*60
取余,余数就是除了整小时以外剩余的秒数。之后整除 6060 就是剩余的秒数中整分钟的数,就是分钟值了。
3.秒
直接对60取余,剩下的就是秒了。
时间的处理就搞好了。下面就是输出了,题目要求时、分、秒不足两位时补前导 00。所以这是一个细节。
当然你可以用printf进行域宽的输出,但是我这里介绍一个用cin的方法。
要用到两个函数:
一个是setw()
函数,这个函数可以限定域宽,宽度就是括号里的数字。
另外一个setfill()
函数,这个函数可以设置当实际的宽度不足setw()
函数的值时,用某个字符来补足。(setfill()
函数最好放在setw()
函数前面)
1 |
|
如何优雅的将秒换算成-时:分:秒?
https://bayeeaa.github.io/2024/04/18/秒转换时间/