• DAY 010--水仙花数for循环应用


    010问题:                            

    什么是水仙花数?水仙花数是指一个 n 位正整数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)。

    要求:打印输出所有的三位数"水仙花数"。

    流程分析:                                                                    

    思路1:

    1、设置范围:三位数的水仙花i,将i从100到999之间循环找书

    2、由于i是整数,将i转为字符串,然后将i的百位数、十位数、个位数(x,y,z)分别取出并再次转换为整数

    3、设定条件:

      if pow(x,3)+pow(y,3)+pow(z,3)==i

    4、如果条件满足就打印i

     

    思路2:

    1、现将这三位数的百位i、十位j、个位k分别从(1,9)、(0,9)、(0,9)这三个范围中枚举

    2、判定条件:

      if pow(i,3)+pow(j,3)+pow(k,3)==i*100+j*10+k

    3、如果条件满足就打印ijk

     

     

    代码分析:                                                                    

     代码1

    for i in range(100,1000):
        x,y,z=map(int,str(i))
        if pow(x,3)+pow(y,3)+pow(z,3)==i:
            print(i)
    
    #输出结果
    153
    370
    371
    407
    思路1

    代码2

    for i in range(1,10):
        for j in range(10):
            for k in range(10):
                if i**3+j**3+k**3==i*100+j*10+k:
                    print(i,j,k)
    
    #输出结果
    1 5 3
    3 7 0
    3 7 1
    4 0 7
    思路2

    题目反思:                                                                    

    1、思路1需要注意如和将整数转为字符串,因为字符串是有顺序的,然后再转为整数,用到的map函数

    2、思路2和枚举法很相似,幂次方也可以用pow函数来代替

    新学知识点:                                                                

    1、一道题的两种不一样的思路,思路1是我想出来的,思路2是题目的标准答案,我的思路可能转换起来比较麻烦,标准代码一目了然

    2、pow有两种用法

    • 用法1
    import math
    math.pow( x, y )
    • 用法2
    pow(x,y[,x])
    • x -- 数值表达式。
    • y -- 数值表达式。
    • z -- 数值表达式。

    函数是计算x的y次方,如果z在存在,则再对结果进行取模,其结果等效于pow(x,y) %z

    注意:pow() 通过内置的方法直接调用,内置方法会把参数作为整型,而 math 模块则会把参数转换为 float。

    3、map(function, iterable, ...)

    • function -- 函数,有两个参数
    • iterable -- 一个或多个序列
    map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
    #相当于
    [3, 7, 11, 15, 19]

    Mark on 2018.04.13

  • 相关阅读:
    hdu4597 Play Game DP
    poj2253 Frogger Dijkstra变形
    poj1797 Heavy Transportation Dijkstra算法的简单应用
    49.将手机收藏信息保存到文件中
    48.XML保存衣服尺码信息
    47.多客户端用户登录
    46. 模拟用户登录的功能
    45.客户咨询问题
    44. 客户端发送信息给服务器端
    43.创建线程的两种方法
  • 原文地址:https://www.cnblogs.com/JunSheep/p/8784775.html
Copyright © 2020-2023  润新知