60分求助
查看原帖
60分求助
1034688
_Geburah楼主2024/6/8 22:26
#include<bits/stdc++.h>
using namespace std;
char n='0';
long long a[400];
long long x[150],y[150];
inline void read(__int128& a)
{
	__int128 s = 0, w = 1;
	char ch = getchar();
	while (ch < '0' || ch>'9')
	{
		if (ch == '-')
			w = -1;
		ch = getchar();
	}
	while (ch >= '0' && ch <= '9')
	{
		s = s * 10 + ch - '0';
		ch = getchar();
	}
	a = s * w;
}
void write1(__int128 x)
{
    if(x<0)
        putchar('-'),x=-x;
    if(x>9)
        write1(x/10);
    putchar(x%10+'0');
    return;
}
int main()
{
	__int128 ans=1,cnt=0,cnt2=0;
	long long i=1;
	read(cnt);
	while(cnt!=0)
	{
		cnt2+=cnt%10;
		cnt2*=10;
		cnt-=cnt%10;
		cnt/=10;
	}
	cnt2/=10;
	while(cnt2!=0)
	{
		a[i]=cnt2%10;
		//cout<<a[i]<<"\n";
		i++;
		cnt2-=cnt2%10;
		cnt2/=10;
	}
	long long k;
	cin>>k;
	for(i=1;i<=k;i++)
	{
		cin>>x[i]>>y[i];
	}
	long long b[400];
	for(i=1;i<=400;i++)
	{
		b[i]=1;
	}
	for(i=1;i<=400;i++)
	{
		bool c[11]={0};c[a[i]]=1;
		for(long long j=1;j<=k;j++)
		{
			for(long long l=0;l<=10;l++)
			{
				//cout<<i<<" "<<j<<" "<<l<<" \n";
				if(c[l]==1&&l==x[j])
				{
					if(c[y[j]]==0)b[i]++;
					c[y[j]]=1;
				}
			}
		}
	}
	for(i=1;i<=400;i++)
	{
		//if(b[i]!=1)cout<<b[i]<<"\n";
		ans*=b[i];
	}
	write1(ans);
	return 0;
}
2024/6/8 22:26
加载中...