乙個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 jwww.cppcns.com j+=1
v=sum((d_pow[x] for x in nums))
if v<=v_max and v>=v_min:
tnropk_count+=1
#test if is flower
#print 'do test:', ''.join(map(str,nums))
k=0while k<10:
tmp_l[k]=0
k+=1
n=0for k in nums:
tmp_l[k]+=1
n+=1
while n>0:
www.cppcns.comp=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求解水仙花數的方法
本文位址:
水仙花數求解
c 如果表示x的y次方,可以用pow x,y 記得加標頭檔案 include 也可以直接相乘,如 pow x,3 起初執行時發現if條件語句沒有起到任何作用,程式輸出了m n之間的所有數字。原因是將x的y次方表示成了x y int main n 100 int i 1,count 1 while c...
python的水仙花數
列印出所有的 水仙花數 所謂 水仙花數 是指乙個三位數,其各位數字立方和等於該數本身。例如 153是乙個 水仙花數 因為153 1的三次方 5的三次方 3的三次方。這題也是送分題,只要能把任意三位數的百位 十位 個位拆解出來就好辦了。思路 將任意3位數除以100再向下取整,即可得到百位數。將這個3位...
python求水仙花數def 有趣的水仙花數
水仙花數 是指乙個三位整數,其各位數字的3次方和等於該數本身。例如 abc是乙個 3位水仙花數 則 a的3次方 b的3次方 c的3次方 abc。是不是很有趣!下面我們來介紹一下如何利用python來對三位數的水仙花數進行求解。首先我們要清楚的認識到三位數有很多,我們要一一對其進行檢驗,因此迴圈是我們...