一、排列字母。
1. 考点:模拟
2. 难度:⭐
3. 要点分析:无。
import sys
string = 'WHERETHEREISAWILLTHEREISAWAY'
string = [t for t in string]
print(''.join(sorted(string)))
二、寻找整数。
1. 考点:数学
2. 难度:⭐⭐⭐
3. 要点分析
①由题可知,该数是11和17的公倍数,即为11*17=187的倍数。
②若仅用187作为步长进行循环,计算量还是太大,因此考虑增加步长的数量级。
③选定一部分条件得到的部分解集合,题目的最终解必然包含在其中,且步长大小一致(因为是倍数关系);由此,选定后几个较大数作为条件,得到两个可能解,计算基本步长。
④利用基本步长,去遍历接下来的剩余条件,得到最终解。
import sys
import os
# L=[]
# for i in range(187,10**12,187):
# if i%44==33 and i%45==29 and i%46==15 and i%47==5 and i%48==41 and i%49==46:
# #else:
# L.append(i)
# if len(L)>=2:
# break
L=[5458460249, 12590206409]
step=L[1]-L[0]
flag=0
for i in range(L[0],10**17,step):
if i%20==9 and i%25==9 and i%26==23 and i%27==20 and i%28==25 and i%29==16 and i%30==29 and i%31==27 and i%32==25 and i%33==11 and i%34==17 and i%35==4 and i%36==29 and i%37==22 and i%38==37 and i%39==23 and i%40==9 and i%41==1 and i%42==11 and i%43==11 :
print(i)
break
三、纸张尺寸。
1. 考点:枚举
2. 难度:⭐⭐
3. 要点分析:无。
# 第三题
import math
a = [1189]
b = [841]
for _ in range(1,9+1):
a.append(b[-1])
b.append(a[-2]//2)
paperType = input()
paperTypes = {'A0':0,'A1':1,'A2':2,'A3':3,'A4':4,'A5':5,'A6':6,'A7':7,'A8':8,'A9':9}
print(a[paperTypes[paperType]])
print(b[paperTypes[paperType]])
四、数位排序。
1. 考点:模拟
2. 难度:⭐⭐
3. 要点分析
利用“散列表”的基本思想。
import os
import sys
n = int(input())
m = int(input())
numbers = [i for i in range(1,n+1)]
number_bits = [[] for i in range(n)]
# level1:数位之和小的在前面
# level2:数值小的在前面
for t in numbers:
x = [int(k) for k in str(t)]
number_bits[sum(x)].append(t)
new_numbers = []
for x in number_bits:
for t in x:
new_numbers.append(t)
print(new_numbers[m-1])
五、蜂巢。
1. 考点:
2. 难度:⭐⭐⭐⭐⭐
六、消除游戏。
1. 考点:并查集 模拟
2. 难度:⭐⭐⭐
3. 要点分析
七、全排列的价值。
1. 考点:
2. 难度:⭐⭐⭐⭐
3. 要点分析:
①全排列的应用
②计算价值,此题与第十四届的“混乱的数组”的思路有些相似很像。
八、技能升级。
1. 考点:
2. 难度:⭐⭐⭐⭐
3. 要点分析:
九、最长不下降子序列。
1. 考点:
2. 难度:⭐⭐⭐
3. 要点分析
十、最优清零方案。
1. 考点:线段树
2. 难度:⭐⭐⭐⭐
3. 要点分析