记录编号 350077 评测结果 AAAAA
题目名称 [NOIP 2002]产生数 最终得分 100
用户昵称 GravatarZwoi_只会打表抄代码的蒟蒻 是否通过 通过
代码语言 C 运行时间 0.001 s
提交时间 2016-11-15 15:35:53 内存使用 0.29 MiB
显示代码纯文本
#include <stdio.h>
#include <string.h>
char a[35];
int b[10][10],n[10],j,k,x,y;
int num[40],head,l;
void come(int x)
{
	int i;
	for(i=head;i<=39;i++)
		num[i]*=x;
	i=39;
	while(num[i]||i>=head)
	{
		num[i-1]+=num[i]/10;
		num[i]%=10;
		i--;
	}
	head=i+1;
}
int main()
{
	int i;
	freopen("build.in","r",stdin);
	freopen("build.out","w",stdout);
	scanf("%s%d",a,&k);
	memset(b,0,sizeof(b));
	for(i=1;i<=k;i++)
	{
		scanf("%d%d",&x,&y);
		b[x][y]=1;
	}
	for(i=0;i<10;i++)
		b[i][i]=1;
	for(i=0;i<=9;i++)
		for(j=0;j<=9;j++)
			for(k=0;k<=9;k++)
			{
				if(b[j][i]&&b[i][k])
					b[j][k]=1;
			}
	for(i=0;i<=9;i++)
		for(j=0;j<=9;j++)
			if(b[i][j])
				n[i]++;
	num[39]=1;
	head=39;
	l=strlen(a);
	for(i=0;i<l;i++)
		come(n[a[i]-'0']);
	for(i=head;i<=39;i++)
		printf("%d",num[i]);
	return 0;
}