4.3

所花时间:6小时

代码量:26

博客篇:1

蒙特·卡罗法计算圆周率

题目描述

蒙特·卡罗方法是一种通过概率来得到问题近似解的方法,在很多领域都有重要的应用,其中就包括圆周率近似值的计问题。假设有一块边长为2的正方形木板,上面画一个单位圆,然后随意往木板上扔飞镖,落点坐标(x,y)必然在木板上(更多的时候是落在单位圆内),如果扔的次数足够多,那么落在单位圆内的次数除以总次数再乘以4,这个数字会无限逼近圆周率的值。这就是蒙特·卡罗发明的用于计算圆周率近似值的方法。编写程序,模拟蒙特·卡罗计算圆周率近似值的方法,输入掷飞镖次数,然后输出圆周率近似值。

【源代码程序】

import random

n = int(input())
num = 0
for i in range(n):
    x = random.random()
    y = random.random()
    if pow(x * x + y * y, 0.5) < 1:
        num += 1

print(num*4/n)

验证6174猜想

题目描述

1955年,卡普耶卡(D.R.Kaprekar)对4位数字进行了研究,发现一个规律:对任意各位数字不相同的4位数,使用各位数字能组成的最大数减去能组成的最小数,对得到的差重复这个操作,最终会得到6174这个数字,并且这个操作最多不会超过7次。请编写程序验证这个猜想。

【源代码程序】

n = input()
print(n, end=' ')
n = list(n)
mmax, mmin = 0, 0
while (mmax - mmin) != 6174:
    mmin = int(''.join(sorted(n)))
    mmax = int(''.join(sorted(n, reverse=True)))
    print(mmax - mmin, end=' ')
    n = list(str(mmax - mmin))  # 要先转为字符串,才能转list,不能直接数字转list

 

爬楼梯

 

题目描述

 

 假设一段楼梯共n(n>1)个台阶,小朋友一步最多能上3个台阶,那么小朋友上这段楼梯一共有多少种方法。

 

【源代码程序】

 

def f(n):
    my_dict = {1:1, 2:2, 3:4}
    if 3 >= n >= 1:
        return my_dict[n]
    else:
        return f(n - 1) + f(n - 2) + f(n - 3)


num = int(input())
print(f(num))

 

posted @ 2024-04-03 20:53  umiQa  阅读(3)  评论(0编辑  收藏  举报