11-22练习

 # 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 
# 程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。

for x in range(1,5):
    for y in range(1,5):
        for z in range(1,5):
            if (x!=y) and (y!=z) and (z!=x):
                print("%d%d%d" % (x, y, z))

===============================================================================================

# 打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。
# 例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
# 程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。

for i in range(100, 1000):
    x = int(str(i)[0])
    y = int(str(i)[1])
    z = int(str(i)[2])
    if x**3 + y**3 + z**3 == i:
        print(i)

===============================================================================================

# 两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。
# 有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。

import itertools
for i in itertools.permutations('xyz'):
    if i[0] != 'x' and i[2] != 'x' and i[2] != 'z':
        print("a vs %s, b vs %s, c vs %s" % (i[0], i[1], i[2]))
        
===============================================================================================

# 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
# 程序分析:对n进行分解质因数,应先找到一个最小的质数i,然后按下述步骤完成:
# (1)如果分解后商为1,则说明分解质因数的过程已经结束,打印出即可。
# (2)如果商不为1,则应打印出i的值,并用n除以i的商,作为新的正整数进行分解,重复执行第一步。
# (3)如果n不能被i整除,则i的值加1,重复执行第一步。

def fun(num):
    for i in range(2, num/2+1):
        if num % i == 0:
            print(i),
            print("*"),
            return fun(num/i)
    print(num),

if __name__ == '__main__':
    num = input("Please input a number: ")
    fun(num)

===============================================================================================

# 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,
# 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。
# 到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
# 程序分析:采取逆向思维的方法,从后往前推断。

n = 1
for i in range(9, 0, -1):
    n = (n+1) * 2

print("第一天共摘了%d个桃子" % n)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值