用了高精度,最后一个样例为什么还是WA
查看原帖
用了高精度,最后一个样例为什么还是WA
626838
Mo_xue楼主2023/8/11 17:04

这是我的代码,求调

#include <bits/stdc++.h>
using namespace std;
const int N=35;
string s;
long long n,k,num[N],m,ans[N],sz=1;
long long rule[15][15],QWQ;
bool vis[15];
void dfs(long long x,long long y)
{
	vis[x]=1;
	if (vis[y]) return ;
	QWQ++;
	for (int i=1;i<=rule[y][0];i++)
	{
		dfs(y,rule[y][i]);
	}
	vis[x]=0;
}
void mul()
{
	int x=0;
	for(int i=1;i<=sz;i++)
	{
		int t=ans[i]*QWQ+x;
		x=t/10;
		ans[i]=t%10;
	}
	if(x>0)
		ans[++sz]=x;
}
int main()
{
	cin>>s;
	scanf("%lld",&k);
	for (int i=1;i<=k;i++)
	{
		long long x,y;
		scanf("%lld%lld",&x,&y);
		if (y!=x)
		{
			rule[x][0]++;
			rule[x][rule[x][0]]=y;
		}
	}
	m=s.size();
	for (int i=0;i<m;i++) num[i+1]=s[i]-'0';
	ans[1]=1;
	for (int i=1;i<=m;i++)
	{
		QWQ=1;
		for (int j=1;j<=rule[num[i]][0];j++)
			dfs(num[i],rule[num[i]][j]);
		memset(vis,0,sizeof vis);
		mul();
	}
	for(int i=sz;i>=1;i--)
		cout<<ans[i];
	return 0;
}
2023/8/11 17:04
加载中...