python求解水仙花數的方法

2022-10-04 22:51:43 字數 1281 閱讀 9895

乙個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來對三位數的水仙花數進行求解。首先我們要清楚的認識到三位數有很多,我們要一一對其進行檢驗,因此迴圈是我們...