社区讨论
用了高精度,最后一个样例为什么还是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 条回复,欢迎继续交流。
正在加载回复...