当前位置 : 主页 > 编程语言 > java >

第十二届蓝桥杯省赛第一场C++A/B/C组真题(节选)

来源:互联网 收集:自由互联 发布时间:2022-07-04
文章目录 ​​一、时间显示​​ ​​二、 砝码称重​​ ​​三、杨辉三角形​​ 一、时间显示 小蓝要和朋友合作开发一个时间显示的网站。 在服务器上,朋友已经获取了当前的时间


文章目录

  • ​​一、时间显示​​
  • ​​二、 砝码称重​​
  • ​​三、杨辉三角形​​

一、时间显示

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

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

现在,小蓝要在客户端显示出这个时间。

小蓝不用显示出年月日,只需要显示出时分秒即可,毫秒也不用显示,直接舍去即可。

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

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

输出格式
输出时分秒表示的当前时间,格式形如 HH:MM:SS,其中 HH 表示时,值为 0 23,MM 表示分,值为 0 59,SS 表示秒,值为 0 59

时、分、秒不足两位时补前导 0

数据范围
对于所有评测用例,给定的时间为不超过 1018 的正整数。

输入样例1:
46800999
输出样例1:
13:00:00
输入样例2:
1618708103123
输出样例2:
01:08:23# 法一
t = int(input()) // 1000 # 秒数
days = t // (24*60*60) # 度过的天数
t -= days * 24 * 60 *60 # 不足一天剩余的秒数
# 将秒数转换为 HH:MM:SS


# h = t // 3600
# m = (t-h*3600) // 60
# s = t-h*3600-m*60

# -------------知道秒数转时分秒-------------
h = t // 3600
m = t // 60 % 60
s = t % 60
# -------------知道秒数转时分秒-------------
print('{:0>2}:{:0>2}:{:0>2}'.format(h,m,s))

# # 法二
# t = int(input()) // 1000 # 秒数
# from time import strftime
# from time import gmtime

# print(strftime("%H:%M:%S", gmtime(t)))

二、 砝码称重

你有一架天平和 N 个砝码,这 N 个砝码重量依次是 W1,W2,⋅⋅⋅,WN。

请你计算一共可以称出多少种不同的正整数重量?

注意砝码可以放在天平两边。

输入格式
输入的第一行包含一个整数 N。

第二行包含 N 个整数:W1,W2,W3,⋅⋅⋅,WN。

输出格式
输出一个整数代表答案。

数据范围
对于 50% 的评测用例,1≤N≤15。
对于所有评测用例,1≤N≤100,N 个砝码总重不超过 105

输入样例:
3
1 4 6
输出样例:
10
样例解释
能称出的 10 种重量是:1、2、3、4、5、6、7、9、10、11。

1 = 1
2 = 6 4 (天平一边放 6,另一边放 4)
3 = 4 1
4 = 4
5 = 6 1
6 = 6
7 = 1 + 6
9 = 4 + 6 1
10 = 4 + 6
11 = 1 + 4 + 6n = int(input())
lis = []
for i in input().split():
i = int(i)
lis.append(i)
lis.append(-i)

s = set()
from itertools import combinations
for i in range(2*n):
for j in combinations(lis,i):
# print(j)
if sum(j) >= 1:
# print(sum(j))
s.add(sum(j))

print(len(s))

三、杨辉三角形

下面的图形是著名的杨辉三角形:

QQ截图20210423150438.png

如果我们按从上到下、从左到右的顺序把所有数排成一列,可以得到如下数列:

1, 1, 1, 1, 2, 1, 1, 3, 3, 1, 1, 4, 6, 4, 1, ...

给定一个正整数 N,请你输出数列中第一次出现 N 是在第几个数?

输入格式
输入一个整数 N。

输出格式
输出一个整数代表答案。

数据范围
对于 20% 的评测用例,1≤N≤10;
对于所有评测用例,1≤N≤109。

输入样例:
6
输出样例:
13n = int(input())
lis = [[1],[1,1]]
N = n+10
for i in range(2,N):
tem = [1,]
for j in range(i-1):
tem.append(lis[-1][j]+lis[-1][j+1])
tem.append(1)
lis.append(tem)
# 把lis拉平
flat = []
for i in range(N):
flat.extend(lis[i])
print(flat.index(n))


上一篇:分解质因数(数学)
下一篇:没有了
网友评论