C 时间起点 HUNNU校赛题解

C 时间起点 HUNNU校赛题解,第1张

C 时间起点 HUNNU校赛题解


本题是校赛的第三题,本题是将计算机时间转换成为24小时制的时间。
本题有一个小坑,题目给的是毫秒不是秒,所以进行运算的时候要先除以1000
而且本题给的数据也非常大,用int只能得45分,用long long 来做便可获得满分
而且所得时间如果小于10,必须填充0

接下来我具体说一说解答此题的思路
首先转换成秒数

我们想获得24小时制的秒数,会发现只要对60取余数,就可以获得24小时制的秒数
因为秒数每60秒进行一次循环 61秒 相当于 秒数是 1 秒 125秒 相当于 秒数是 5 秒
所以秒数 可以用 a%60表达

分数该怎么办呢?
我们先算经过了多少分数,60秒是一分,则只要除以60,就可以获得经过了多少分钟
但是每60分一个循环,于是我们可以把取得的分数再对60取余,就可以得到分数
所以分数 可以用 (a/60)%60表达

时数该怎么办呢?
我们计算经过了几个小时,3600秒是一个小时,只要除以3600,就可以获得经过了多少小时
24个小时一循环,把得到的数对24取余,就可以得到时数了
所以时数 可以用 (a/3600)%24表达

获得了时分秒,我们还需要对输出规范化

当时分秒大于10,和原来一样
如果小于10,怎前面输出一个0 再输出时分秒
例如 05 02 00

代码如下

#include
using namespace std;

int main(){
	long long a;  //要定义long long
	cin>>a;
	a = a/1000;  // 毫秒转秒
	int h,m,s;
	
	
	h = (a/3600)%24; 
	m = (a/60)%60;
	s = a%60;
	
// 输出规范化
	if(h<10)  cout<<"0"<					
										


					

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5659216.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存