【bzoj4292】 [PA2015]Równanie 乱搞

嗯嗯,看到题果断数位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;
}


你可能感兴趣的:(【bzoj4292】 [PA2015]Równanie 乱搞)