问题描述
思路
核心:寻找每一号位的最大值
- 枚举,暴力破解缩小范围,寻找每一号位5个最大评分,再进行for循环
代码如下
import os
import sys
# 请在此输入您的代码
s1=[97,92,0,0,89,82,0,0,0,95,0,0,94,0,0,0,98,93,0,0]
s2=[90,85,0,0,83,86,0,97,0,99,0,0,91,83,0,0,83,87,0,99]
s3=[0,96,0,0,97,0,0,96,89,0,96,0,0,87,98,0,99,92,0,96]
s4=[0,0,0,80,0,0,87,0,0,0,97,93,0,0,97,93,98,96,89,95]
s5=[0,0,93,86,0,0,90,0,0,0,0,98,0,0,98,86,81,98,92,81]
ls=[]
'''
#暴力求解:
for i in s1:
for j in s2:
for k in s3:
for x in s4:
for y in s5:
if(i!=j!=k!=x!=y):
ls.append(i+j+k+x+y)
print(max(ls))
'''
#范围求解:
s1_5=[]
s2_5=[]
s3_5=[]
s4_5=[]
s5_5=[]
#分别存入n号位对应的5个最大数值
for i in range(0,5):
s1_5.append(max(s1))
s1.remove(max(s1))
for i in range(0,5):
s2_5.append(max(s2))
s2.remove(max(s2))
for i in range(0,5):
s3_5.append(max(s3))
s3.remove(max(s3))
for i in range(0,5):
s4_5.append(max(s4))
s4.remove(max(s4))
for i in range(0,5):
s5_5.append(max(s5))
s5.remove(max(s5))
for i in s1_5:
for j in s2_5:
for k in s3_5:
for x in s4_5:
for y in s5_5:
if(i!=j!=k!=x!=y):
ls.append(i+j+k+x+y)
print(ls)
print(max(ls))
2、数列求值
import os import sys # 请在此输入您的代码 # a,b,c,d = 1,1,1,0 # for i in range(3,20190324): # d = (a+b+c)%10000 # a,b,c = b,c,d # print(d) print(4659)3、质数
import os import sys import math # ①构造列表,存储质数 # ②质数个数等于2019,放回其值 # n = sys.maxsize # ls = [2,3] # for i in range(4,n): # for j in range(2,i//2+1): # if i%j == 0: # break # else:ls.append(i) # if len(ls) == 2019: # break # print(ls[2018]) print(17569)4、年号字串
import os import sys # 个位 a = 2019 % 26 b = 2019 // 26 # 十位 c = b % 26 # 百位 d = b // 26 list = '*ABCDEFGHIJKLMNOPQRSTUVWXYZ' print(list[d] + list[c] + list[a])5、数的分解
import os
import sys
# 要求:分成不同的正整数,不包含2,4,不重复性
# 1、利用for循环,
# 2、不包含2,4 利用str(i).count(2) == 0
ans = 0
for i in range(1,672):
for j in range(i+1,(2019-i)//2+1):
a = str(i)+str(j)+str(2019-i-j)
if 2019 - i - j > j and '2' not in a and '4' not in a:
ans += 1
print(ans)
6、迷宫
7、奇数倍数
问题描述
个人思路
- 先判断是2019的整倍数将数,转换为str型,对其for循环遍历,除于2若各位数都为奇数,则输出,并跳出循环
代码
import os
import sys
n = sys.maxsize
for i in range(n):
if i % 2019 ==0:
for j in str(i):
if int(j) % 2 == 0:
break
else:
print(i)
break
8、完全二叉树的权值
问题描述
代码如下
import os
import sys
import math
N = int(input())
A = list(map(int, input().split()))
ans = []
#ceil向上取整,log求对数
deep = math.ceil(math.log(N+1,2))
b = 0
for i in range(1, deep+1):
c = 2 ** i - 1
ans.append(sum(A[b:c]))
b = c
#index查找索引值,默认0开始
print(ans.index(max(ans))+1)
9、质数拆分
参考
【程序设计】 1、特别数之和 2、特殊数之平方和注:临时变量存储总和的时间 < 列表存储数据
标题 【总结】【填空】
1、枚举爆破,for循环
2、找规律,容易数据溢出,缩小范围
3、枚举暴力
4、取余,获取每个数的每个位数
5、
【程序设计】
1、数学逻辑知识



