洛谷闹鬼?下载测试点于洛谷IDE测试无误但提交WA求调有用必关
查看原帖
洛谷闹鬼?下载测试点于洛谷IDE测试无误但提交WA求调有用必关
1284582
F_L_Bird楼主2024/8/18 20:22

也许求调帖子应该要有一个吸引人的标题吗(大雾)

代码如下:

#include<iostream>
#include<string>
using namespace std;

string turning_rule[15];
int num_of_turning[10];
bool vis[10];
int k;

struct HPN{		//高精度,num[0]用于存放数字位数
	int num[50] = {1,1};
}ans;

void dfs(int n){
	vis[n] = true;
	for(int i = 0;i < k;i += 1)
	{
		if(turning_rule[i][0] - '0' == n && !vis[turning_rule[i][2] - '0'])	//如果有可以变化的数字且变化后的数字未被统计过
		{
			dfs(turning_rule[i][2] - '0');
		}
	}
	return;
}

struct HPN multiply(struct HPN a,int n){	//处理高精乘低精
	int x = 0;
	for(int i = 1;i <= a.num[0];i += 1)
	{
		a.num[i] *= n;
		a.num[i] += x;
		x = a.num[i] / 10;
		a.num[i] %= 10;
	}
	a.num[0] += (x == 0 ? 0 : 1);		//处理最后一位的进位
	a.num[a.num[0]] += x;
	return a;
}

int main(){
	string n;
	cin>>n>>k;
	cin.ignore();
	for(int i = 0;i < k;i += 1)
	{
		getline(cin,turning_rule[i]);
	}
	for(int i = 0;i <= 9;i += 1)		//对每个数字可能转变的个数进行遍历
	{
		for(int j = 0;j <= 9;j += 1)	//初始化数组
		{
			vis[j] = false;
		}
		dfs(i);
		for(int j = 0;j <= 9;j += 1)	//统计可能的数字个数
		{
			if(vis[j])
			{
				num_of_turning[i] += 1;
			}
		}
	}
	for(int i = 0;i < n.length();i += 1)
	{
		ans = multiply(ans,num_of_turning[n[i] - '0']);		//乘法原理求解
	}
	for(int i = ans.num[0];i >= 1;i -= 1)
	{
		cout<<ans.num[i];
	}
	return 0;
}

总而言之,情况如标题所示,除#3其余全WA,求各位dalao进行debug或者求点hack数据QAQ(题目数据下载了是没问题的),有用必关谢谢喵

2024/8/18 20:22
加载中...