蓝桥杯算法提高 计算时间

算法提高 计算时间
Description

给定一个t,将t秒转化为HH:MM:SS的形式,表示HH小时MM分钟SS秒。HH,MM,SS均是两位数,如果小于10用0补到两位。

Input

输入描述:
  第一行一个数T(1<=T<=100,000),表示数据组数。后面每组数据读入一个数t,0<=t<246060。
输入样例:
2
0
86399

Output

输出描述:
  每组数据一行,HH:MM:SS。
输出样例:
00:00:00
23:59:59

用Java写这道题提交的时候会超时,用C不会超时。
核心算法:输入/3600=小时
输入%3600/60=分钟
输入%3600%60=秒。

import java.util.Scanner;

public class CalculationTime {

	public static void main(String[] args) {
		//Long start=System.currentTimeMillis();//程序开始的时刻
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		int[] data=new int[n];
		int[] dateYear=new int[n];
		int[] dateMonth=new int[n];
		int[] dateDay=new int[n];
		for(int i=0;i<data.length;i++) {
			data[i]=sc.nextInt();
		}
		for(int i=0;i<data.length;i++) {
			dateYear[i]=data[i]/3600;
			dateMonth[i]=data[i]%3600/60;
			dateDay[i]=data[i]%3600%60;
			System.out.printf("%02d:%02d:%02d\n",dateYear[i],dateMonth[i],dateDay[i]);

		}
		//Long end=System.currentTimeMillis();//程序结束的时刻
		//System.out.print(end-start);//输出程序运行的时间
		
	}

}

#include<stdio.h>
int main(void){
int n=0;
scanf("%d",&n);
int h=0;
int m=0;
int s=0;
int a[n];
int i=0;
for(i=0;i<n;i++){
	scanf("%d",&a[i]);
}
for(i=0;i<n;i++){
	h=a[i]/3600;
	m=a[i]%3600/60;
	s=a[i]%3600%60;
	printf("%02d:%02d:%02d\n",h,m,s);
}
return 0;
}

猜你喜欢

转载自blog.csdn.net/Heloiseeeeeee/article/details/88343093