while True:
n = int(input())
arr = [5] * n
for i in range(1, n):
if i % 2 == 0:
arr[i] = 2 * arr[i - 1] + 2
else:
arr[i] = 2 * arr[i - 1] - 2
print(sum(arr))
简单的找规律问题
while True:
t = int(input())
for i in range(t):
print(bin(int(input()))[2:].count('1'))
while True:
import random
def partition(arr, p, q):
x = arr[p]
i = p
for j in range(p + 1, q + 1):
if arr[j] <= x:
i += 1
arr[i], arr[j] = arr[j], arr[i]
arr[i], arr[p] = arr[p], arr[i]
return i
def quickselect(arr, s, t, k):
if s == t:
return arr[s]
i = partition(arr, s, t)
j = i - s + 1
if k == j:
return arr[i]
elif k < j:
return quickselect(arr, s, i - 1, k)
else:
return quickselect(arr, i + 1, t, k - j)
def randomizedselect(arr, s, t, k):
if s == t:
return arr[s]
i = randomizedpartition(arr, s, t)
j = i - s + 1
if k == j:
return arr[i]
elif k < j:
return randomizedselect(arr, s, i - 1, k)
else:
return randomizedselect(arr, i + 1, t, k - j)
def rand(p, q):
return random.randint(p, q)
def randomizedpartition(arr, p, q):
r = rand(p, q)
arr[p], arr[r] = arr[r], arr[p]
return partition(arr, p, q)
k = int(input())
arr = list(map(int, input().split()))
print(randomizedselect(arr, 0, len(arr) - 1, len(arr) - k+1))
第K大数就是第len(arr)-k小数
def chessboard(tr, tc, dr, dc, size):
global num
if size == 1:
return
s = size // 2
num += 1
t = num
if dr < tr + s and dc < tc + s:
chessboard(tr, tc, dr, dc, s)
else:
arr[tr + s - 1][tc + s - 1] = t
chessboard(tr, tc, tr + s - 1, tc + s - 1, s)
if dr >= tr + s and dc < tc + s:
chessboard(tr + s, tc, dr, dc, s)
else:
arr[tr + s][tc + s - 1] = t
chessboard(tr + s, tc, tr + s, tc + s - 1 + s, s)
if dr < tr + s and dc >= tc + s:
chessboard(tr, tc + s, dr, dc, s)
else:
arr[tr + s - 1][tc + s] = t
chessboard(tr, tc + s, tr + s - 1, tc + s, s)
if dr >= tr + s and dc >= tc + s:
chessboard(tr + s, tc + s, dr, dc, s)
else:
arr[tr + s][tc + s] = t
chessboard(tr + s, tc + s, tr + s, tc + s, s)
while True:
n = int(input())
num = 0
arr = []
p = 0
q = 0
for i in range(n):
arr.append(list(map(int, input().split())))
if -1 in arr[-1]:
for j in range(n):
if arr[-1][j] == -1:
p = i
q = j
chessboard(0, 0, p, q, n)
for i in range(n):
print(*arr[i])
def digui(x, y, n):
if n == 1:
return x * y
elif x == 0 or y == 0:
return 0
else:
a = x // pow(10, n / 2)
b = x % pow(10, n / 2)
c = y // pow(10, n / 2)
d = y % pow(10, n / 2)
ac = digui(a, c, n / 2)
bd = digui(b, d, n / 2)
abcd = digui(a - b, d - c, n / 2) + ac + bd
return int(ac * pow(10, n) + abcd * pow(10, n / 2) + bd)
while True:
x, y = map(str, input().split())
sign = str(x).count('-') + str(y).count('-')
len1 = max(len(x), len(y))
x += (len1 - len(x)) * '0'
y += (len1 - len(y)) * '0'
flag = 2 * len1 - len(x) + len(y)
if len(x) % 2 != 0:
x += '0'
y += '0'
flag += 2
if sign % 2 == 0:
print(digui(abs(int(x)), abs(int(y)), len(x)))
else:
print(-digui(abs(int(x)), abs(int(y)), len(x)))
mer = [[0] * 100 for i in range(100)]
def digui(n, m):
if n < 1 or m < 1:
return 0
if n == 1 or m == 1:
return 1
if n < m:
if mer[n][n] == 0:
mer[n][n] = digui(n, n)
return mer[n][n]
if n == m:
if mer[n][n - 1] == 0:
mer[n][n - 1] = digui(n, n - 1)
return mer[n][n - 1] + 1
if mer[n][m - 1] == 0:
mer[n][m - 1] = digui(n, m - 1)
if mer[n - m][m] == 0:
mer[n - m][m] = digui(n - m, m)
return mer[n][m - 1] + mer[n - m][m]
while True:
n = int(input())
print(digui(n, n))
多加一个数组保存数据防止重复运算
flag = 1
while True:
m, n = map(float, input().split())
if m > n:
print('Case ' + str(flag) + ': Bigger')
elif m < n:
print('Case ' + str(flag) + ': Smaller')
else:
print('Case ' + str(flag) + ': Same')
flag+=1
from itertools import *
while True:
t = int(input())
par_s = []
par_g = []
for i in range(t):
s, a = map(str, input().split())
a = int(a)
par_s.append(s)
par_g.append(a)
m = int(input())
b = list(map(int, input().split()))
if m < t:
for i in range(t - m):
b.append(0)
target = input()
ans = []
for elemt in permutations(b):
c = par_g.copy()
elemt = list(elemt)
for i in range(t):
c[i] += elemt[i]
# print(c)
c_sort = sorted(c)[::-1]
for i in range(t):
if par_s[i] == target:
for j in range(t):
if c[i] == c_sort[j]:
ans.append(j)
# print(ans)
print(min(ans) + 1, max(ans) + 1)
时间爆炸了过不了