1.跑步训练
a = 10000
i = 0
while True:
a -= 600
i += 60
if a <= 0:
a += 600
b = a/10
i = i+b-60
print(int(i))
break
a += 300
i += 60
输出3880
2.阶乘约数
a = 1
for i in range(1,101):
a *=i
j,ans = 2,1
while j<(a//j):
b = 1
while a%j==0:
a//=j
b +=1
ans *=b
j +=1
if a > 1:
ans *=2
print(ans)
输出39001250856960000
3.出栈次序
def fic(a, b):
if a == 0:
return 1
if b == 0:
return fic(a-1, 1)
return fic(a-1, b+1)+fic(a, b-1)
print(fic(16, 0))
输出35357670
4.哥德巴赫分解
x = []
def gdbh(n):
def IsPrime(num):
if num == 2:
return True
for i in range(2,num):
if num % i == 0:
return False
return True
for j in range(2, n // 2 + 1):
if IsPrime(j) and IsPrime(n - j):
return [j,n-j]
for i in range(4,10001,2):
x.append(min(gdbh(i)))
print(max(x))
输出173
5.图书排列
import itertools
res = 0
x = [i for i in range(10)]
def check(a):
for i in range(9):
if abs(a[i]-a[i+1]) == 1:
return False
return True
for i in itertools.permutations(x, 10):
if check(i):
res += 1
print(res)
输出479306
6.猴子分香蕉
n = 10
while True:
if n % 5 == 1:
a = (n - 1) / 5 * 4
if int(a) % 5 == 2:
b = (a - 2) / 5 * 4
if int(b) % 5 == 3:
c = (b - 3) / 5 * 4
if int(c) % 5 == 4:
d = (c - 4) / 5 * 4
if int(d) % 5 == 0 and d != 0:
break
n += 1
print(n)
输出3141
7.稍小分数
from fractions import Fraction
def check(x):
if x == 2:
return True
for i in range(2, x):
if x%i==0:
return False
return True
if __name__ == '__main__':
m = []
All = []
for i in range(2, 100):
if check(i):
m.append(i)
print(m)
for i, j in enumerate(m):
for k in m[:i]:
a = Fraction(k, j)
if a not in All:
All.append(a)
All = sorted(All)
print(All)
a = int(input('输入分子:'))
b = int(input("输入分母:"))
num = Fraction(a, b)
out = False
for i in range(len(All)):
if All[i] >= num:
print(All[i-1])
out = True
break
if not out:
print(All[-1])
8.excel地址
x = [chr(i) for i in range(65,91)]
n = int(input())
res = []
while n != 0:
if n % 26 == 0:
res.append(26)
n = n // 26 - 1
else:
res.append(n % 26)
n = n//26
for i in range(len(res)):
res[i] = x[res[i]-1]
res.reverse()
print(''.join(res))
9.日期问题
n = input()
a = []
m = {1:31, 2:30, 3:31,4:30,5:31,6:30,7:31,8:31,9:30,10:31,11:30,12:31}
a.append(n[:2])
a.append(n[3:5])
a.append(n[6:])
res = []
if int(a[0]) in range(60):
res.append(['20'+a[0]])
res[0].append(a[1])
res[0].append(a[2])
if int(a[2]) > m[int(a[1])] or int(a[1]) > 12:
res[-1] = []
else:
res.append(['19'+a[0]])
res[0].append(a[1])
res[0].append(a[2])
if int(a[2]) > m[int(a[1])] or int(a[1]) > 12:
res[-1] = []
if int(a[2]) in range(60):
res.append(['20'+a[2]])
res[1].append(a[1])
res[1].append(a[0])
if int(a[0]) > m[int(a[1])] or int(a[1]) > 12:
res[-1] = []
else:
res.append(['19'+a[2]])
res[1].append(a[1])
res[1].append(a[0])
if int(a[0]) > m[int(a[1])] or int(a[1]) > 12:
res[-1] = []
if int(a[2]) in range(60):
res.append(['20'+a[2]])
res[2].append(a[0])
res[2].append(a[1])
if int(a[0]) > 12 or int(a[1]) > m[int(a[0])]:
res[-1] = []
else:
res.append(['19'+a[2]])
res[2].append(a[0])
res[2].append(a[1])
if int(a[0]) > 12 or int(a[1]) > m[int(a[0])]:
res[-1] = []
a = []
print(res)
for i in range(3):
if res[i] != []:
a.append('-'.join(res[i]))
print(a)
10.整数划分
def f(n,a,k):
if n <= 0:
for i in range(k):
print(a[i], end='')
print()
return
for i in range(n, 0, -1):
if k > 0 and i < a[k-1]:
continue
a[k] = i
f(n-i, a, k+1)
a = [0] * 10000
f(6, a, 0)
11.一步之遥
x = 97
y = 127
ans = 600
for i in range(300):
for j in range(300):
if i*x - j* y==1:
ans = min(ans, i+j)
print(ans)
12.机器人推塔
import math
def check():
a = 0
b = 0
tmp = row
while tmp >0:
for i in range(1, tmp+1):
if cnt[i] == 1:
a +=1
else:
b += 1
for i in range(2, tmp+1):
if cnt[i-1]==cnt[i]:
cnt[i-1] = 1
else:
cnt[i-1] = 2
tmp -=1
if a == m and b == n:
return True
else:
return False
def dfs(k):
global res
if k > row:
if check():
res +=1
return
cnt[k] = 1
dfs(k+1)
cnt[k] = 2
dfs(k+1)
if __name__ == "__main__":
m = int(input())
n = int(input())
res = 0
cnt = [0 for _ in range(100010)]
row = int(math.sqrt(2*(m+n)))
dfs(1)
print(res)
13.七星填空
import itertools
x = [i for i in range(1, 15)]
x.remove(6)
x.remove(11)
x.remove(14)
def check(a):
num1 = a[0] + a[1] + a[2] + a[3]
num2 = 6 + a[1] + a[4] + 14
if num1 != num2:
return False
num3 = 6 + a[2] + a[5] + 11
if num2 != num3:
return False
num4 = a[3] + a[5] + a[7] + a[10]
if (num3 != num4):
return False
num5 = a[8] + a[9] + a[7] + 11
if (num4 != num5):
return True
num6 = a[6] + a[10] + a[8] + 14
if (num5 != num6):
return False
num7 = a[0] + a[4] + a[6] + a[9]
if (num6 != num7):
return False
return True
for i in itertools.permutations(x):
if check(i):
print(i)
for j in range(4):
print(i[j])
break