嗯嗯,看到题果断数位dp。
然而可以乱搞一下,枚举f(n),然后直接判断k*f(n)的f是不是f(n)不就好了吗?
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<algorithm>
using namespace std;
long long a,b,k;
long long ans=0;
int cal(long long x)
{
int ans=0;
while (x)
{
ans+=(x%10)*(x%10);
x/=10;
}
return ans;
}
int main()
{
scanf("%lld%lld%lld",&k,&a,&b);
for (int i=1;i<=1500 && i<=b/k;i++)
{
long long n=(long long)k*i;
if (a<=n && n<=b && cal(n)==i) ans++;
}
printf("%lld\n",ans);
return 0;
}