与Python有关的练习

对于一个十进制的正整数, 定义f(n)为其各位数字的平方和,如:

f(13) = 1**2 + 3**2 = 10

下面给出三个正整数k,a, b,要求 k>=1, a,与b均小于10**18, 且a小于等于b。你需要计算有多少个正整数n满足a<=n<=b,

且k*f(n)=n

程序运行范例:

输入k、ab51 5000 10000

运行结果:3
def f(n):
    s=0
    while n!=0:
        s+=(n%10)**2
        n//=10
    return s
cnt=0
k,a,b=map(int,input().split())
for i in range(a,b+1):
    if k*f(i)==i:
        cnt+=1
print(cnt)