陈越、何钦铭-数据结构-起步能力自测题 1-5题 python版
自测-1 打印沙漏
from math import sqrt
s = input()
s1 = s.split()
num = int(s1[0])
n = (num -1)//2
n1 = int(sqrt(n + 1))
for i in range(n1, 0, -1):
print((n1-i) * ' ', end='')
print((2 * i - 1)*s1[1])
for j in range(2, n1+1):
print((n1 - j)*' ', end='')
print((2 * j - 1)*s1[1])
surplus = num - ((n1**2)*2-1)
print(surplus)
自测-2 素数对猜想
from math import sqrt
def prime_number(num):
end = int(sqrt(num))
is_prime = True
for x in range(2, end + 1):
if num % x == 0:
is_prime = False
break
return is_prime
N = int(input())
n = 0
for i in range(2, N - 1):
if prime_number(i):
j = i + 2
if prime_number(j):
n += 1
print(n)
自测-3 数组元素循环右移问题
m, n = map(int, input().split())
num = list(input().split())
num1 = num[0: m-n]
num2 = num[m-n: m]
num = num2 + num1
print(' '.join(num))
自测-4 Have Fun with Numbers
s = input()
num = int(s)
st = list(s)
s1 = num * 2
st1 = list(str(s1))
time = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
time1 = [int(0) for _ in range(10)]
is_prime = True
if len(st) == len(st1):
for i in range(len(st)):
time[int(st[i])] += 1
time1[int(st1[i])] += 1
for j in range(10):
if time[j] != time1[j]:
is_prime = False
break
if is_prime:
print('Yes')
else:
print('No')
print(s1)
注:改代码还未通过测试点1和测试点5,暂时还没找到方法。
自测-5 Shuffling Machine
num = int(input())
order = list(map(int, input().split()))
a = ['S', 'H', 'C', 'D']
n = 0
st = []
for i in range(4):
for j in range(1, 14):
st.append(a[i] + str(j))
n += 1
st.append('J1')
st.append('J2')
for x in range(num):
temporary_st = st.copy()
for y in range(54):
temporary_st[order[y] - 1] = st[y]
st = temporary_st.copy()
print(' '.join(st))