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的我真的很坚强。。。。
然后就弃疗了。。。
posted @ 2018-06-09 13:17  沛霖  阅读(142)  评论(0编辑  收藏  举报