求救洛谷P5991

虽然题目难度暂无评定,但是我觉得为橙(红)题
题目传送门
28分
共54个点
AC 28个点
TLE 26个点
CODE:

#include<bits/stdc++.h>
using namespace std;
int f(int x)
{
	int sum=0;
	for(int i=x; i; i=i/10)
		sum+=((i%10)*(i%10));
	return sum;
}
int main()
{
	int k,a,b,ans=0;
	cin>>k>>a>>b;
	for(int i=a; i<=b; i++)
		if(f(i)*k==i)
			ans++;
	cout<<ans;
    return 0;
}

要优化,但我没思路QAQ

时间复杂度错误,

所以应该怎么优化?dalao给个思路

看 题解 吧。