记录编号 44351 评测结果 AAAAAAAAAA
题目名称 [顾研NOIP] 幸运之数 最终得分 100
用户昵称 GravatarCzb。 是否通过 通过
代码语言 C++ 运行时间 0.622 s
提交时间 2012-10-18 11:37:29 内存使用 0.30 MiB
显示代码纯文本
#include<stdio.h>
#include<queue>

using namespace std;

typedef long long Int;

Int x,y,ans;

int t,a[20],b[20];

queue <Int> Q;

void dfs(int k)
{
	if(k==0)
	{
		Int tmp=0,top=b[t+1];
		for(int i=t+1;i>0;i--)
		{
			tmp*=10;
			top*=10;
			tmp+=b[i];
		}
		for(Int i=tmp;i<=y;i+=top,top*=10)
		{
			Q.push(i);
		}
		return;
	}
	if(b[k+1]-a[k]>=0)
	{
		b[k]=b[k+1]-a[k];
		dfs(k-1);
	}
	if(b[k+1]+a[k]<10&&a[k]!=0)
	{
		b[k]=b[k+1]+a[k];
		dfs(k-1);
	}
}

void solve(Int k)
{
	if(k>=x&&k<=y)
		ans++;
	t=0;
	while(k)
	{
		a[++t]=k%10;
		k/=10;
	}
	for(int i=1;i<10;i++)
	{
		b[t+1]=i;
		dfs(t);
	}
}

void bfs()
{
	Q.push(7);
	while(!Q.empty())
	{
		solve(Q.front());
		Q.pop();
	}
}

int main()
{
	freopen("lucky.in","r",stdin);
	freopen("lucky.out","w",stdout);
	scanf("%lld%lld",&x,&y);
	bfs();
	printf("%lld\n",ans);
	return 0;
}