目录
知识回顾
知识延伸
下面是这些奇妙的自幂数的相应的区间之内的数值:
思路梳理
1、我们来在一个区间之内来判断这个区间的数有哪些数是水仙花数/相应的自幂数
以上的两种方式都通过写一个IsWaterFlower()的函数作为接口来直接判断
2、我们需要判断一个数是否为水仙花数,通过I/O(Input / Output)的方式来单次判断
接口剖析:
此处的key就是一个我们传入函数的判断值(普及一下在Java里面我们在C/C++之内被称为的函数就被称为“方法”了),下面我们来提前初始化几个我们需要使用的元素
代码剖析:
此处的sum就是我们用来装载一个水仙花数的容器,就是把水仙花数都放在sum里面,方便后面判断。
Remainder就是每次我们求出的每一位的数值,也就是每次/10之后得出的余数
ret就是一个交换器,我们不能让key直接暴露在整个程序中,我们得让key在最后进行判断时候发挥作用,所以我们必须在中途找一个交换器来每次更新key的数值。
我们想要知道一个数是否为水仙花数/自幂数,那么我们必须了解这个数的位数,就是为了去后续将他们变成水仙花数的方便的操作。
此处的count就是一个计数器,就是来计算我们需要判断的数的位数,因为每次让ret/10,就可以剥离末尾的一位数,直到ret被剥离完毕的时候(ret == 0),count的数值就是这个需要判断的数(ret也就是key)的位数。
我们后续还需要把每一位数剥离出来,所以此时ret的数值不能被剥离成0,所以此时我们继续使用key来重新赋值ret。
我们再继续使用sum来接收每一个水仙花数/自幂数,我们此时Remainder来剥离key中的每一个数,此时我们就需要每次Remainder = ret%10(每次取余10就会得到一个末尾的个位数),此时我们就可以取出来他的每一个数来进行sum += (int)pow(Remainder , count),有人会问,pow是什么?
我们也同时需要引入头文件#include<math.h>,pow(double x , double y)也就是求一个数的n次方,x是底数,y是指数,我们最后得到的数需要是int类型的所以我们必须强制类型转换
把每一次的数的余数Remainder的count次方存入sum中,此时知道为什么要count这个计数器了吧!
我们再把这个数进行/10处理让他降位,直到ret(也就是key)变成0,
下面就是我们判断的时刻了,来判断一个数是否为水仙花数/自幂数
我们从始至终的key的数值来获得中间变量的过程变量都是被ret给代替了,sum每次都将key的每一位数的次方都存入,最终来进行判断,如果是水仙花数/自幂数,就返回1,否则就返回0。
等到我们后面使用接口的时候,就可以直接判断。
法1:
给定一个区间Begin、End这两个变量来设定区间,我们使用一个for循环语句,每次进行判断,如果返回值是1的话,就是水仙花数/自幂数,如果是0,那就不是,不用执行任何操作。
我们可以看见我们设定的区间解决了水仙花数/四叶玫瑰数。
法2:
直接给个input数,再直接调用接口IsWaterFlower(input)来判断是否为水仙花数/自幂数
好啦!今天的分享结束啦!你学到了吗?
码字不易!希望大家给个关注!后续我将会继续为大家带来更多高质量文章!