第一题,原题,主要是随机数的运用,三门语言一起学,每次到Python的时候都要回想一下格式是什么
import random
from time import perf_counter
c=input()
darts=int(c)
random.seed(123)
hits=0.0
for i in range(darts):
x,y=random.random(),random.random()
dist = pow(x**2+y**2,0.5)
if dist<=1.0:
hits=hits+1
pi=4*(hits/darts)
print("{:.6f}".format(pi))
第二题
这道题主要是判断质数,我的想法是用循环while else语法
然后WA了一个,原因就是用int()转浮点数的时候,会四舍五入,但是应该是向下取整
加一个
m = m + 1 if m < n else m
就行了
# 请在...补充一行或多行代码
def prime(m):
i=0
j=0
while i<5:
x=m+j
k=1
while k<x-1:
k=k+1
if x%k == 0:
break
else :
i=i+1
if i!=5:
print("{:},".format(x),end="")
elif i == 5:
print(x,end="")
j=j+1
n = eval(input())
m=int(n)
m = m + 1 if m < n else m
prime(m)
第三题,汉诺塔
虽然是原题,虽然我至少看过三个解析,但是我TM就是不能完全理解,还是先看老师的代码吧
# 请在...补充一行或多行代码
steps = 1
def hanoi(src, des, mid, n):
global steps
if n == 1:
print("[STEP{:>4}] {}->{}".format(steps,src, des))
steps+=1
else:
hanoi(src,mid,des,n-1)
print("[STEP{:>4}] {}->{}".format(steps,src, des))
steps+=1
hanoi(mid,des,src,n-1)
N = eval(input())
hanoi("A", "C", "B", N)
第四题 太简单
第五题
经典题目说不清楚话
山本,到底是每次三位数,还是三次一位数构造
#请在...补充代码
import random
def genpwd(length):
y=1
for i in range(length):
y*=10
x=random.randint(y/10,y)
return x
length = eval(input())
random.seed(17)
for i in range(3):
print(genpwd(length))
不过用Pow显然比我这里会短一些