python求解水仙花数的方法


Posted in Python onMay 11, 2015

本文实例讲述了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 相关文章推荐
Python根据区号生成手机号码的方法
Jul 08 Python
python web框架学习笔记
May 03 Python
今天 平安夜 Python 送你一顶圣诞帽 @微信官方
Dec 25 Python
python 顺时针打印矩阵的超简洁代码
Nov 14 Python
pycharm的console输入实现换行的方法
Jan 16 Python
关于python之字典的嵌套,递归调用方法
Jan 21 Python
Python3.5内置模块之random模块用法实例分析
Apr 26 Python
python批量下载抖音视频
Jun 17 Python
pycharm访问mysql数据库的方法步骤
Jun 18 Python
Python+appium框架原生代码实现App自动化测试详解
Mar 06 Python
Python中相见恨晚的技巧
Apr 13 Python
Pytorch 如何实现常用正则化
May 27 Python
pymongo为mongodb数据库添加索引的方法
May 11 #Python
python判断windows系统是32位还是64位的方法
May 11 #Python
Python中使用装饰器时需要注意的一些问题
May 11 #Python
python在linux系统下获取系统内存使用情况的方法
May 11 #Python
Python实现登录人人网并抓取新鲜事的方法
May 11 #Python
python实现中文输出的两种方法
May 09 #Python
python使用xlrd实现检索excel中某列含有指定字符串记录的方法
May 09 #Python
You might like
简化php模板页面中分页代码的解析
2009/02/06 PHP
PHP stristr() 函数(不区分大小写的字符串查找)
2010/06/03 PHP
PHP获取当前日期所在星期(月份)的开始日期与结束日期(实现代码)
2013/06/18 PHP
php工具型代码之印章抠图
2018/07/18 PHP
Javascript Global对象
2009/08/13 Javascript
超酷的网页音乐播放器DewPlayer使用方法
2010/12/18 Javascript
jQuery的12招常用技巧分享
2011/08/08 Javascript
js 可拖动列表实现代码
2011/12/13 Javascript
jQuery 删除/替换DOM元素的几种方式
2014/05/20 Javascript
JavaScript中toString()方法的使用详解
2015/06/05 Javascript
使用angularjs创建简单表格
2016/01/21 Javascript
js实现可旋转的立方体模型
2016/10/16 Javascript
node.js文件上传处理示例
2016/10/27 Javascript
详解如何在vue中使用sass
2017/06/21 Javascript
JS和Canvas实现图片的预览压缩和上传功能
2018/03/30 Javascript
bootstrap treeview 树形菜单带复选框及级联选择功能
2018/06/08 Javascript
vue基础之模板和过滤器用法实例分析
2019/03/12 Javascript
[00:32]2018DOTA2亚洲邀请赛Liquid出场
2018/04/03 DOTA
[08:06]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant 选手采访
2021/03/11 DOTA
Python导入oracle数据的方法
2015/07/10 Python
Python写入数据到MP3文件中的方法
2015/07/10 Python
python pandas生成时间列表
2019/06/29 Python
使用Python和百度语音识别生成视频字幕的实现
2020/04/09 Python
pygame实现弹球游戏
2020/04/14 Python
CSS3实现任意图片lowpoly动画效果实例
2017/05/11 HTML / CSS
html5 Canvas画图教程(3)—canvas出现1像素线条模糊不清的原因
2013/01/09 HTML / CSS
澳大利亚实惠时尚女装商店:Katies
2019/06/16 全球购物
夜班门卫岗位职责
2013/12/09 职场文书
工艺员岗位职责
2014/02/11 职场文书
统计专业自荐书
2014/07/06 职场文书
2014小学生国庆65周年演讲稿
2014/09/21 职场文书
2014年环境卫生工作总结
2014/11/24 职场文书
东京审判观后感
2015/06/01 职场文书
读《推着妈妈去旅行》有感1500字
2019/10/15 职场文书
PHP基本语法
2021/03/31 PHP
JavaWeb 入门:Hello Servlet
2021/07/16 Java/Android