Description
对于一个正整数n,定义f(n)为它十进制下每一位数字的平方的和。现在给定三个正整数k,a,b,请求出满足a<=n<=b且k*f(n)=n的n的个数。
Input
第一行包含三个正整数k,a,b(1<=k,a,b<=10^18,a<=b)。
Output
输出一个整数,即满足条件的n的个数。
Sample Input
51 5000 10000
Sample Output
3
HINT
满足的3个n分别为7293,7854和7905。
Source
By Claris
暴力
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define LL long long
using namespace std;
LL k,a,b;
int l,r;
int sqr(int x)
{
return x*x;
}
int calc(LL x)
{
int ret=0;
while (x) ret+=sqr(x%10),x/=10;
return ret;
}
int main()
{
cin>>k>>a>>b;a--;
for (LL i=1;i<1500&&i<=a/k;i++) l+=(i==calc(i*k));
for (LL i=1;i<1500&&i<=b/k;i++) r+=(i==calc(i*k));
cout<<r-l<<endl;
}