python求解水仙花数的方法
更新时间:2015年05月11日 10:11:32 作者:上大王
这篇文章主要介绍了python求解水仙花数的方法,较为详细的分析了水仙花数问题的概念与对应解决方法的实现技巧,需要的朋友可以参考下
本文实例讲述了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程序设计有所帮助。
相关文章
Pycharm 2to3配置,python2转python3方式
这篇文章主要介绍了Pycharm 2to3配置,python2转python3方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-12-12Python 文件操作技巧(File operation) 实例代码分析
python遍历文件夹和文件 perl分割路径和文件名2008-08-08解决pandas.DataFrame.fillna 填充Nan失败的问题
今天小编就为大家分享一篇解决pandas.DataFrame.fillna 填充Nan失败的问题。具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2018-11-11
最新评论