C语言刷题------(2)

C语言刷题——————(2)

刷题网站:题库 - 蓝桥云课 (lanqiao.cn)

First Question:时间显示

题目描述

小蓝要和朋友合作开发一个时间显示的网站。

在服务器上,朋友已经获取了当前的时间,用一个整数表示,值为从 19701970 年 11 月 11 日 00:00:0000:00:00 到当前时刻经过的毫秒数。

现在,小蓝要在客户端显示出这个时间。小蓝不用显示出年月日,只需要显示出时分秒即可,毫秒也不用显示,直接舍去即可。

给定一个用整数表示的时间,请将这个时间对应的时分秒输出。

输入描述

输入一行包含一个整数,表示时间。

输出描述

输出时分秒表示的当前时间,格式形如 HH:MM:SS,其中 HH 表示时,值为 00 到 2323,MM 表示分,值为 00 到 5959,SS 表示秒,值为 00 到 5959。时、分、秒 不足两位时补前导 00。

输入输出样例

示例 1

输入

46800999

输出

13:00:00
示例 2

输入

1618708103123

输出

01:08:23

评测用例规模与约定

对于所有评测用例,给定的时间为不超过 10^18 的正整数。


思路:先分别对应化成秒、分、时,再分别算有多少秒、分、时
Demo:
#include 
#include 

int main(int argc, char *argv[])
{
  // 请在此输入您的代码
  long long int millisecond;
	scanf("%lld", &millisecond);
	millisecond /= 1000;//先化成秒
	int second = millisecond % 60;//得到有多少秒
	millisecond /= 60;//再化成分钟
	int minute = millisecond % 60;//得到有多少分钟
	millisecond /= 60;//最后化成小时
	int hour = millisecond % 24;//得到有多少小时
	printf("%02d:%02d:%02d", hour, minute, second);
  return 0;
}

Second Question:特别的数求和

题目描述

小明对数位中含有 2、0、1、9 的数字很感兴趣(不包括前导 0),在 1 到 40 中这样的数包括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574。

请问,在 1 到 n 中,所有这样的数的和是多少?

输入描述

输入一行包含一个整数 n(1≤n≤10^4)。

输出描述

输出一行,包含一个整数,表示满足条件的数的和。

输入输出样例

示例

输入

40

输出

574

思路:先将末尾为0和2、1、9的数字分开找,每一次找完,就/10,排除末尾数字,再找十位数字,就相当于先从个位开始,依次是十位、百位、千位……

Demo:
#include 
#include 

int main(int argc, char *argv[])
{
  // 请在此输入您的代码
  int num = 0;
	int mid = 0;
	scanf("%d", &num);
	int sum = 0;
	for (int i = 1; i <= num; i++)
	{
		mid = i;
		while (mid > 0)
		{
			if (mid % 10 == 0 && mid / 10 != 0)//找是10的倍数的整数
			{
				sum = sum + i;
				break;
			}
			if ((mid % 10 == 2) || (mid % 10 == 1) || (mid % 10 == 9))//用来找数字最后一位为2、1、9的数字
			{
				sum += i;
				break;
			}
			mid = mid / 10;//相当于除去最后一个末尾数字
		}	
	}
	printf("%d\n",sum);
  return 0;
}

C语言刷题------(2)_第1张图片
枯木逢春犹再发,人无两度再少年。

你可能感兴趣的:(C语言,c语言,算法,开发语言,visual,studio)