python求解水仙花数的方法
程序员文章站
2022-06-14 16:15:38
本文实例讲述了python求解水仙花数的方法。分享给大家供大家参考。具体如下:
一个n位的十进制正整数,如果它的每个位上的数字的n次方的和等于这个数本身,则称其为花朵数。...
本文实例讲述了python求解水仙花数的方法。分享给大家供大家参考。具体如下:
一个n位的十进制正整数,如果它的每个位上的数字的n次方的和等于这个数本身,则称其为花朵数。
#!/usr/bin/python def get_flower(n, ofile): d_pow=[pow(i,n) for i in range(0,10)] v_min=1*pow(10,n-1) v_max=sum((9*pow(10,x) for x in range(0,n))) t_count=0 print d_pow, v_max, v_min nums=[1]+[0]*(n-1) print 'start:', nums idx=n-1 tmp_l=[0]*10 while true: nums[idx]+=1 if nums[idx]<10: j=idx+1 while j<n: nums[j]=nums[idx] # reset j+=1 v=sum((d_pow[x] for x in nums)) if v<=v_max and v>=v_min: t_count+=1 #test if is flower #print 'do test:', ''.join(map(str,nums)) k=0 while k<10: tmp_l[k]=0 k+=1 n=0 for k in nums: tmp_l[k]+=1 n+=1 while n>0: p=v%10 if tmp_l[p]>0: tmp_l[p]-=1 n-=1 else: break v/=10 if n==0: print >>ofile, 'hit', sum((d_pow[x] for x in nums)) idx=n-1 elif idx==0: print 'done' break else: idx-=1 print 't_count', t_count if __name__ == '__main__': with file('./f.txt', 'wb') as o: get_flower(21, o) #get_flower(3, o)
希望本文所述对大家的python程序设计有所帮助。
推荐阅读
-
python使用phoenixdb操作hbase的方法示例
-
对Python中的条件判断、循环以及循环的终止方法详解
-
Python面向对象程序设计中类的定义、实例化、封装及私有变量/方法详解
-
Python利用字典破解WIFI密码的方法
-
说说如何遍历Python列表的方法示例
-
对python_discover方法遍历所有执行的用例详解
-
使用Python3+PyQT5+Pyserial 实现简单的串口工具方法
-
PHP+MySQL统计该库中每个表的记录数并按递减顺序排列的方法
-
Python把对应格式的csv文件转换成字典类型存储脚本的方法
-
详解Python logging调用Logger.info方法的处理过程