比赛 [不是Rapiz出的]农场主钦定NOIP模拟赛1 评测结果 AAAAAAAAAA
题目名称 Rabbit Number 最终得分 100
用户昵称 哒哒哒哒哒! 运行时间 1.454 s
代码语言 C++ 内存使用 0.31 MiB
提交时间 2016-11-08 18:39:11
显示代码纯文本
#include <ctime>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
using namespace std;
#define ll long long 
int read(){
	int x=0,f=1;char ch=getchar();
	while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
	while(ch>='0'&&ch<='9') x=x*10+ch-48,ch=getchar();
	return x*f;
}
int S(ll x){
	int ans=0;while(x){ans+=x%10,x/=10;}return ans;
}
ll qk_pow(int a,int b){
	ll p=1;while(b){if(b&1) p=(p*a);a=a*a;b/=2;}return p;
}
int check(int x){
	int cnt=0,flag=0;
	while(x%10>=3&&x){flag=1;x/=10,cnt++;}
	return flag==0?-1:cnt;
}
ll pw[100];
int main(){
	freopen("rabbits.in","r",stdin);freopen("rabbits.out","w",stdout);
	int l=read(),r=read(),ans=0;
	for(int i=1;i<=15;i++) pw[i]=qk_pow(10,i);
	int op,s1,s2;
	for(ll i=l;i<=r;){
		s1=S(i),s2=S(i*i);
		if(s1*s1==s2) ans++;
		op=check(i);
		if(op==-1){i++;continue;}
		i=i/pw[op]*pw[op]+pw[op];
	}
	printf("%d\n",ans);
	fclose(stdin);fclose(stdout);
	return 0;
}