bzoj4292 [PA2015]Równanie
[PA2015]Równanie
Time Limit: 1 Sec Memory Limit: 256 MB
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。
其实 $f(n)$ 很少,所以这是一道**题。 每个 $f(n)$ 有且仅对应一个数。就好了。 ```c++
include<bits/stdc++.h>
using namespace std;
long long k, a, b;
inline int lpl(long long t)
{
int ret = 0;
while(t){
ret += (t % 10) * (t % 10);
t /= 10;
}
return ret;
}
int main()
{
scanf("%lld%lld%lld", &k, &a, &b);
long long i, ans = 0;
for(i = 0; i <= 1911 && i <= b / k; ++i){
if(i * k >= a && lpl(i * k) * k == i * k) ans++;
}
cout << ans;
return 0;
}
写数位dp的我真的很坚强。。。。
然后就弃疗了。。。
心如花木,向阳而生。