优快云话题挑战赛第2期
参赛话题:学习笔记
1. 哥德巴赫猜想
题目描述
输入一个偶数 N,验证 4~N 所有偶数是否符合哥德巴赫猜想:任一大于 2 的偶数都可写成两个质数之和。如果一个数不止一种分法,则输出第一个加数相比其他分法最小的方案。例如 10,10=3+7=5+5,则 10=5+5 是错误答案。
输入格式
第一行输入一个正偶数 N(4 ≤ N ≤ 10000)
输出格式
输出
N − 2 2 \dfrac{N-2}{2} 2N−2
行。对于第 i 行:首先先输出正偶数 2i+2,然后输出等号,再输出加和为 2i+2 且第一个加数最小的两个质数,以加号隔开。
样例输入
10
样例输出
4=2+2 6=3+3 8=3+5 10=3+7
import math
def is_prime(num):
"""判断是否是素数"""
if num == 1:
return False
k = int(math.sqrt(num))
for i in range(2, k + 1):
if num % i == 0:
return False
return True
n = int(input().strip())
for num in range(4, n+1, 2):
for i in range(2, num):
if is_prime(i) and is_prime(num - i):
print(f'{
num}={
i}+{
num-i}')
break
2. HYX玩卡片
题目描述
HXY得到了一些卡片,这些卡片上标有数字 0 或 5 。现在她可以选择其中一些卡片排成一列,使得排出的一列数字组成的数最大,且满足被 90 整除这个条件。同时,这个数必须为合法的某个非负整数,即不能含有前导 0,即 0 不能作为这串数的首位。但是特殊地,整数 0 满足条件。如果不能排出这样的数,输出“-1”。
输入格式
第一行,卡片的个数 n(n ≤ 1000)。
第二行,分别给出了这 n 个数(只能为数字 5 或 0)。
输出格式
仅一行,如果可以排出,则输出这个数。否则输出
-1
。样例输入 #1
4 5 0 5 0
样例输出 #1
0
样例输入 #2
11 5 5 5 5 5 5 5 5 0 5 5
样例输出 #2
5555555550
样例输入 #3
2 5 5
样例输出 #3
-1
n = int(input().strip())
nums = [int(i) for i in input().strip().split()]
# 不包含0的肯定不满足条件
if nums.count(0) == 0:
print(-1)
else:
# 统计5的个数
count_5 = nums.count(5)
# 统计0的个数
count_0 = nums.count(0)
# print(count_5)
if count_5 >= 9:
# 有多少组 9个5
k = count_5 // 9
max_num = '5' * (9 * k) + '0' * count_0
print(max_num)
else:
print(0)
3. Bookshelf B(奶牛叠罗汉)
题目描述
Farmer John最近为奶牛们的图书馆添置了一个巨大的书架,尽