输入数据有多组,每组占一行,包括两个整数m和n(100 ≤ m ≤ n ≤ 999)。
对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开; 如果给定的范围内不存在水仙花数,则输出no; 每个测试实例的输出占一行。
100 120 300 380
no 370 371
while True:
try:
m,n=list(map(int,input().split(' ')))
list1=[]
list2=[]
def flower(x):#判断是否是水仙花数
str_list=list(x)
if len(str_list)<3:
return False
sum1=int(str_list[0])**3+int(str_list[1])**3+int(str_list[2])**3
if sum1==int(x):
return True
else:
return False
for i in range(m,n+1):
#print(i)
list1.append(str(i))
for i in list1:
if flower(i):
list2.append(i)
#print(list2)
if len(list2)==0:
print('no')
else:
result=' '.join(list2)
print(result)
except:
break
m,n = map(int, input().split())
# if 100<=m<=n<=999:
flowers = []
for i in range(m,n+1):
if (i%10)**3 + (i//100)**3 + (i//10%10)**3 == i:
flowers.append(i)
print("no" if not flowers else " ".join(map(str, flowers)))
'''
else:
print('wrong input, m,n should be in 100<=m<=n<=999')
'''
import sysdef func(m,n): ''' m: int n: int ''' record = [] for i in range(m,n+1): ge = i%10 shi = i//10%10 bai = i//100 if i == ge**3 + shi**3 + bai**3: record.append(str(i)) if not record: print('no') else: print(' '.join(record))if __name__=='__main__': m,n = map(int,sys.stdin.readline().strip().split()) func(m,n)
import sys
def ifshuxian(s):
List = list()
beichushu = s
sum = 0
while beichushu is not 0:
yushu = beichushu%10
beichushu /= 10
List.append(yushu)
for item in List:
sum += item*item*item
if sum == s:
return True
else:
return False
s = [item.rstrip('\n').split() for item in sys.stdin.readlines()]
for item in s:
Lis = list()
for dig in range(int(item[0]), 1+int(item[1])):
if ifshuxian(dig) is True:
Lis.append(str(dig))
if len(Lis) is 0:
print("no")
else:
print ' '.join(Lis)
while (True):
def shuixian():
m,n = input().split()
m = int(m)
n = int(n)
M = []
k = 0
if 100<= m <= n <= 999:
for i in range(m, n+1):
x = (i // 100)
y = (i % 100)//10
z = (i%10)
if x**3 + y**3 + z**3 ==i:
M.append(i)
k += 1
else:
pass
if k == 0:
print('no')
else:
s = " ".join(M)
print(s)
else:
shuixian()
shuixian()
import sys
for line in sys.stdin.readlines():
m,n = map(int,line.strip().split())
res = []
for x in range(m,n+1):
hun = x // 100
dec = x % 100 // 10
dig = x % 10
y = pow(hun,3) + pow(dec,3) + pow(dig,3)
if y == x:
res.append(x)
print('no' if not res else " ".join(map(str,res))) python 大法好啊 if __name__ == '__main__': m, n = list(map(int, input().split(" "))) res = [] for i in range(m, n + 1): a = i % 10 b = i // 10 % 10 c = i // 100 % 10 if a ** 3 + b ** 3 + c ** 3 == i: res.append(i) if len(res) == 0: print("no") else: print(" ".join(map(str, res)))
def func(n):
a = int(n / 100)
b = int((n - a*100) / 10)
c = n - a*100 - b*10
return a,b,c
raw_input = input()
input_num = raw_input.split()
min_num = int(input_num[0])
max_num = int(input_num[1])
res = []
for i in range(min_num, max_num+1):
a,b,c = func(i)
temp = a**3 + b**3 + c**3
if temp == i:
res.append(str(i))
if len(res) == 0:
print('no')
else:
res = ' '.join(res)
print(res)
暴力算出结果,再索引,可以通过
```
import sys
ans = [0 for i in range(1000)]
for i in range(100,1000):
a,b,c = map(int,str(i))
if i ==(a**3 + b**3 + c**3):
ans[i]=1
for mn in sys.stdin.readlines():
m,n = map(int,mn.split())
temp = []
for i in range(m,n+1):
if ans[i]==1:
temp.append(i)
if temp.__len__()==0:
print('no')
else:
print(' '.join(map(str,temp)))
```
m,n=input().split() n=int(n) m=int(m) M=[] for i in range(m,n): a=i//100 b=i%100 c=b//10 d=b%10 if i==a**3+c**3+d**3: M.append(i) if M==[]: print('no') else: for i in M[:-1]: print(i,end=' ') print(M[-1])
starttarget,endtarget = map(int,input().split(' '))
digits = []
finalresult = 0
i = 0
nothing = 0
outprint = []
for counter in range(starttarget,endtarget):
elements = counter
while(elements>0) :
holders = elements%10
digits.append(holders)
elements = elements // 10
length=len(digits)
while(i<length):
temp = (digits[i])**3
finalresult = finalresult + temp
i+=1
if(finalresult == counter):
outprint.append(counter)
nothing = 1
digits.clear()
i=0
holders=0
finalresult = 0
if(nothing == 0):
print('no')
else:
while(i<len(outprint)-1):
print(outprint[i],end=' ')
i+=1
print(outprint[i])
m,n=map(int,input('').split(' '))
a_list=[]
s=0
for i in range(m,n+1):
i=str(i)
for j in range(len(i)):
s+=int(i[j])**3
if s==int(i):
a_list.append(i)
s=0
if a_list:
print(' '.join(a_list))
else:
print('no')
发现mn根本不在100-999之间,这是Python的通用解法~