陈越、何钦铭-数据结构-起步能力自测题 1-5题 python版

陈越、何钦铭-数据结构-起步能力自测题 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

Have Fun with Number

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

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))
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值