社区讨论

用了高精度,最后一个样例为什么还是WA

P1037[NOIP 2002 普及组] 产生数参与者 3已保存回复 5

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
5 条
当前快照
1 份
快照标识符
@lo1w5t05
此快照首次捕获于
2023/10/23 03:58
2 年前
此快照最后确认于
2023/11/03 04:26
2 年前
查看原帖
这是我的代码,求调
CPP
#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;
}

回复

5 条回复,欢迎继续交流。

正在加载回复...