问题求解——while 循环

第1关 辗转相除法

管你这那的,直接调用函数

import math
a = int(input())
b = int(input())
########## Begin ##########
print(math.gcd(a,b))
########## End ##########

第2关 计算机如何进行复杂运算

x = eval(input())
########## Begin ##########
g=x/2
while abs(x-g*g)>=1e-6:
    g=(g+x/g)/2
########## End ##########
print('%.5f' % g)

第3关 计算机如何进行复杂运算(续)

x = eval(input())
########## Begin ##########
g1=x/3
g2=2*g1/3+x/(3*g1*g1)
while abs(g1-g2)>=1e-6:
    g1=g2
    g2=2*g1/3+x/(3*g1*g1)
########## End ##########
print('%.5f' % g2)

第4关 见证历史的数

n = int(input())
########## Begin ##########
i=1
PP=0
while i<=n:
    PP=PP+((-1)**(i+1))*(1/(2*i-1))
    i=i+1
pi=4*PP
########## End ##########
print('%.6f' % pi) #圆周率= 3.1415926…

第5关 见证历史的数(续)

n = int(input())
########## Begin ##########
A=0
B=0
for i in range(1,n+1):
    A=A+((-1)**(i-1))/((2*i-1)*(5**(2*i-1)))
    B=B+((-1)**(i-1))/((2*i-1)*(239**(2*i-1)))
pi=16*A-4*B
########## End ##########
print('%.14f' % pi) #圆周率= 3.141592653589793…

第6关 三个数的最大公约数

管你这那的,直接调用函数

import math
a = int(input())
b = int(input())
c = int(input())
########## Begin ##########
print(math.gcd(a,math.gcd(b,c)))
########## End ##########

第7关 三个数的最小公倍数

import math
a = int(input())
b = int(input())
c = int(input())
########## Begin ##########
d=math.gcd(a,b)
a=int(a/d)
b=int(b/d)
LCM1=a*b*d
e=math.gcd(LCM1,c)
LCM1=int(LCM1/e)
c=int(c/e)
print(e*LCM1*c)
########## End ##########

第8关 空瓶换酒

n = int(input())
########## Begin ##########
ping=0
gai=0
ans=0
while n>=1 or ping>=2 or gai>=4:
    if n>=1:
        ans=ans+n
        ping=ping+n
        gai=gai+n
        n=0
    if ping>=2:
        n=n+(ping//2)
        ping=ping%2
    if gai>=4:
        n=n+(gai//4)
        gai=gai%4
print(ans)
########## End ##########
posted @ 2026-11-03 09:02  qtanglani  阅读(22)  评论(0)    收藏  举报