比赛 [不是Rapiz出的]农场主钦定NOIP模拟赛1 评测结果 AAAAAAAAAA
题目名称 Rabbit Number 最终得分 100
用户昵称 Hzoi_chairman 运行时间 1.804 s
代码语言 C++ 内存使用 0.26 MiB
提交时间 2016-11-08 19:24:19
显示代码纯文本
/*
	Name:Rabbit Number
	Copyright:
	Author:chairman
	Date: 08/11/16 19:16
	Description:打表观察规律可知,答案都是有周期的,每一次都是从已有的乘10+1、2、3,递归就行了
	            还有一种做法:先打表,二分查找即可
*/
#include<cstdlib>
#include<cstdio>
#define ll long long
ll read()
{
	ll x,f=1;
	char ch;
	while(ch=getchar(),ch>'9'||ch<'0')if(ch=='-')f=-1;
	x=ch-48;
	while(ch=getchar(),ch>='0'&&ch<='9')x=x*10+ch-48;
	return x*f;
}
ll l,r,ans;
ll count(ll x)
{
	int cnt=0;
	while(x)cnt+=x%10,x/=10;
	return cnt;
}
void dfs(ll x)
{
	for(int i=0;i<=3;i++)
	{
		ll y=x*10+i;ll z=count(y);
		if(!y)continue;
		if(z*z==count(y*y)&&y>=l&&y<=r)ans++;
		if(y*10<=r)dfs(y);
	}
}
int main()
{
	freopen("rabbits.in","r",stdin);
	freopen("rabbits.out","w",stdout);
	l=read(),r=read();
	dfs(0);
	printf("%d\n",ans);
//	system("pause");
	fclose(stdin);
	fclose(stdout);
}