第十三届蓝桥杯大赛软件赛省赛B组python个人解答(1)
试题 A: 排列字母
小蓝要把一个字符串中的字母按其在字母表中的顺序排列。
例如,LANQIAO 排列后为 AAILNOQ。
又如,GOODGOODSTUDYDAYDAYUP 排列后为 AADDDDDGGOOOOPSTUUYYY
。
请问对于以下字符串,排列之后字符串是什么?
WHERETHEREISAWILLTHEREISAWAY
// 比较简单直接上
a=input()
b=[]
for i in a:
b.append(i)
b.sort()
print("".join(str(i) for i in b))
试题 B: 寻找整数
有一个不超过 1017 的正整数 n,知道这个数除以 2 至 49 后的余数如下表
所示,求这个正整数最小是多少。
// A:解题
#这题其实第一个想法就是暴力破解,
#但是当把所有条件都写下去会发现运行时间非常长,
#所以只能每一列选取数来作为限制条件,待结果出来再验算。
import math
import datetime
starttime = datetime.datetime.now()
print(starttime )
s=int(math.pow(10,17))
z=[]
for i in range(0,s,11):#这里是因为该数可被11整除,我们步长为11可大大减少运行时间
if i%10 ==9:
if i%11 == 0:
if i%12 == 5:
if i%13 == 10:
if i%47==5:
if i%48==41:
if i%25== 9:
if i%37== 22:
if i % 43 == 11:
z.append(i)
print(z)
endtime = datetime.datetime.now()
print(endtime - starttime)
运行时间1分39秒,在考试时还是能接受的,当然我相信还有更好的办法,欢迎大家来交流!