目录
1、数字迷宫
解题思路:枚举 暴力 但运行时间长(适合做填空题) a的范围【1,n//3】b的范围【a+1,2*n//3】
n = int(input())
count = 0
for a in range(1, n//3):
for b in range(a+1, 2*n//3):
c = n - a - b
if (a+b)<2*n//3 and c>b and a != b and b != c and a != c and str(a).find('2') == -1 and str(a).find('4') == -1 and str(b).find('2') == -1 and str(b).find('4') == -1 and str(c).find('2') == -1 and str(c).find('4') == -1:
count += 1
print(count)
2、特别数的和
解题思路:判断字符是否包含1、2、0、9 然后求和
count=0
n=int(input())
for i in range(1,n+1):
a=str(i)
if "1" in a or "2" in a or "0" in a or "9" in a:
count=count+i
print(count)
3、等腰三角形
解题思路:根据三角形找出规律 用s字符串包含1234567891011.......根据规律需要进行切割
n = int(input())
s = '0'
for i in range(1, 10000):
s += str(i)
print("." * (n - 1) + s[1])
for j in range(2, n):
a = ''
a += '.' * (n - j) + s[j] + "." * (2 * j - 3) + s[4 * n - j - 2]
print(a)
print(s[n:3*n-1])
4、航班时间
解题思路:数学问题:求出飞行时间 对输入的字符串以空格分开 根据两位切割为时分秒、化为秒计算,再还原时间格式
def fight_time():
line = str(input()).split(' ')
h1 = int(line[0][0:2])
m1 = int(line[0][3:5])
s1 = int(line[0][6:8])
h2 = int(line[1][0:2])
m2 = int(line[1][3:5])
s2 = int(line[1][6:8])
day = 0
if len(line) == 3:
day = int(line[2][2])
s = h1 * 3600 + m1 * 60 + s1
e = h2 * 3600 + m2 * 60 + s2
return e - s + day * 24 * 3600
n = int(input())
for i in range(n):
ans = (fight_time() + fight_time()) / 2
hh = int(ans / 3600)
mm = int(ans / 60 % 60)
ss = int(ans % 60)
print("{:0>2d}:{:0>2d}:{:0>2d}".format(hh,mm,ss))
5、重复字符串
解题思路:根据键值对 步长为len(s)//k 依次判断是否相同,计算修改次数然后相加
k = int(input())
a = list(input())
n = len(a)//k
ans = 0
for i in range(n):
dic ={}
for j in range(i,len(a),n):
if a[j] in dic:
dic[a[j]] = dic[a[j]]+1
else:
dic[a[j]] = 1
m = max(dic.values())
ans = ans + (k-m)
print(ans)
6、 超级质数
答案:373
import math
def isPrime(num):
if num==2 or num==3:
return 1
else:
n=int(math.sqrt(num))
for i in range(2,n+1):
if num%i==0:
return 0
else:
return 1
cd=[2,3,5,7]
ls=[]
for i in cd:
for j in cd:
for k in cd:
if isPrime(i*100+j*10+k) and isPrime(i*10+j) and isPrime(j*10+k):
ls.append(i*100+j*10+k)
print(max(ls))
7、成绩分析
s = int(input())
good_num= 0
pass_num= 0
for m in range(s):
num= int(input())
if num >= 85:
good_num += 1
pass_num += 1
elif num >= 60:
pass_num += 1
print('{}%'.format(round(pass_num/s*100)))
print('{}%'.format(round(good_num/s*100)))
8、单词分析
a=str(input())
b=[]
for i in a:
s=a.count(i)
b.append(s)
t=max(b)
for x in range(len(a)):
if t!=b[x]:
continue
else:k=a[x]
print(k)
print(t)
a=str(input())
dic={}
for i in range(len(a)):
if a[i] in dic:
dic[a[i]]=dic[a[i]]+1
else:
dic[a[i]]=1
key=[k for k,v in dic.items() if v==max(dic.values())]
print(''.join(key))
print(max(dic.values()))