是不是unsigned long long还不够输出结果?那该怎么办,求助!
#include<iostream>
#include<cstdio>
#include<string>
#include<vector>
using namespace std;
int k;
unsigned long long ans=1;
string n;
int num[35];
unsigned long long sum[35];
vector<int> map[10];
bool vis[10];
unsigned long long dfs(int x)
{
unsigned long long cnt=1;
for(int i=0;i<map[x].size();i++)
{
if(!vis[map[x][i]])
{
vis[map[x][i]]=1;
cnt=cnt+dfs(map[x][i]);
vis[map[x][i]]=0;
}
}
return cnt;
}
int main()
{
cin>>n>>k;
for(int i=0;i<n.size();i++) num[i+1]=n[i]-'0';
for(int i=1;i<=k;i++)
{
int x,y;
scanf("%d %d",&x,&y);
map[x].push_back(y);
}
for(int i=1;i<=n.size();i++)
{
if(sum[num[i]]) ans*=sum[num[i]];
else
{
vis[num[i]]=1;
unsigned long long tmp=dfs(num[i]);
ans*=tmp;
sum[num[i]]=tmp;
vis[num[i]]=0;
}
}
cout<<ans<<endl;
return 0;
}