记录编号 343447 评测结果 AAAAAAAAAA
题目名称 Rabbit Number 最终得分 100
用户昵称 GravatarRapiz 是否通过 通过
代码语言 C++ 运行时间 2.483 s
提交时间 2016-11-09 10:58:12 内存使用 0.29 MiB
显示代码纯文本
#include<cstdio>
#include<algorithm>
#define file(x) "rabbits."#x
typedef long long ll;
int l,r,now[30];
int gsum(ll x){
	int s=0;
	while(x) s += x%10,x /= 10;
	return s;
}
ll comb(int* a,int len){
	ll s = 0;
	for (int i = 0;i < len;i++) s = s*10 + a[i];
	return s;
}
ll lim,lcnt,ret;
void dfs(int cnt){
	if (cnt==lcnt) {
		ll nx = comb(now,cnt);
		if(nx <= lim) {
			int sig = gsum(nx);
			ret += sig*sig == gsum(nx*nx);
		}
		return ;
	}
	for (int i = 0;i < 4;i++) now[cnt] = i,dfs(cnt + 1);
}
int calc(int nlim) {
	lim=nlim;
	ret=lcnt=0;
	while(nlim) nlim/=10,lcnt++;
	dfs(0);
	return ret;
}
int main(){
	freopen(file(in),"r",stdin);
	freopen(file(out),"w",stdout);
	scanf("%d%d",&l,&r);
	printf("%d",calc(r) - calc(l-1));
}