f(n)最大值为18* 81=1458。枚举f(n),判断f(f(n)*k)是否等于f(n) 即可。
代码:
#include<iostream>
#include<cstdio>
#define ll long long
using namespace std;
ll k;
int f(ll x)
{
int re=0;
while(x>0) {re+=(x%10)*(x%10);x=x/10;}
return re;
}
int main()
{
ll l,r,ans=0;
scanf("%lld%lld%lld",&k,&l,&r);
for(int fn=1;fn<=1458;fn++)
{
if((double)k*fn>r) break;
if((f(k*fn)==fn)&&(k*fn>=l)&&(k*fn<=r)) ans++;
}
printf("%lld\n",ans);
return 0;
}