洛谷P1013 [NOIP1998 提高组] 进制位

2023-12-13 19:04:37

洛谷P1013 [NOIP1998 提高组] 进制位

第一次写注释(笑)

#include<bits/stdc++.h>
using namespace std;
int n,nn;
string a[15][15];
int b[15][15],c[15][15];
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    for(int j=1;j<=n;j++)
    cin>>a[i][j];                                    //输入 
    nn=n-1;						//进制的计算
	
	/*
	本题的计算中
	经推算 第二行输入中的字母数量即为进制数
	因为字母表示的是正整数
	如果n=5
	假设进制数为6
	那样就会出现这样的表格:
	+ 2 3 4 5
	2 4 5 10 11
	3 5 10 11 12
	4 10 11 12 13
	5 11 12 13 14
	其中0,1两个数字无法用字母表示
	如果出现这样的答案 会判定  “ERROR!”
	  
	*/
	
	
	 
    for(int i=2;i<=n;i++)
    {
    	for(int j=2;j<=n;j++)                  
    	if(a[i][j].length()==2) b[i][1]++;
		b[1][i]=c[1][i]=c[i][1]=b[i][1]; 
	} 
    /*for(int i=2;i<=n;i++)
    for(int j=2;j<=n;j++)
    if(a[i][j].length()==2) 
    {
    	b[1][j]++;
		c[1][j]++;
	}*/
	
	/*
	建立在第一段注释的基础上
	可以同样推断出 
	第一列 和 第一行 中的字母
	是由每一列或每一行中的两位数数量决定的 
	可以通过九九加法表推出	
	
	*/
	
	
	
    /*for(int i=2;i<=n;i++)
    {
    	if(b[i][1]!=b[1][i])
    	{
    		cout<<"ERROR!";
    		return 0;
		}
	}*/
	for(int i=2;i<=n;i++)
	{
		for(int j=2;j<=n;j++)
		{
			//cout<<a[i][j].length()<<" ";
			for(int z=0;z<=a[i][j].length()-1;z++)
			{	
			
				b[i][j]*=10;
				//cout<<a[i][j].substr(z,1)<<endl;
				for(int ii=2;ii<=n;ii++) if(a[ii][1]==a[i][j].substr(z,1)) b[i][j]+=b[ii][1];
			}
		}
		//cout<<endl;
	}
	//cout<<endl<<endl<<endl;
	
	
	
	
	
	for(int i=2;i<=n;i++)
	for(int j=2;j<=n;j++)
	{
		c[i][j]=c[i][1]+c[j][1];
		if(c[i][j]>nn-1)
		{
			c[i][j]+=10;
			c[i][j]-=nn;
		}
	}
	/*
	通过九九加法表计算出来的数值
	可以将整个加法表自己重新推算一遍
	再通过将加法表与输入进行对比
	判断ERROR 
	
	
	*/ 
	/*for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
	cout<<b[i][j]<<" ";
	cout<<endl;
	}
	cout<<endl<<endl;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
	cout<<c[i][j]<<" ";
	cout<<endl;
	}
	cout<<endl<<endl;*/
	for(int i=2;i<=n;i++)
	for(int j=2;j<=n;j++)
	if(b[i][j]!=c[i][j])
	{
		cout<<"ERROR!";
    	return 0;						//判断ERROR! 
	}
	for(int i=2;i<=n-1;i++)
	cout<<a[i][1]<<"="<<b[i][1]<<" ";
	cout<<a[n][1]<<"="<<b[n][1]<<endl;
	cout<<nn;
    return 0;
}

文章来源:https://blog.csdn.net/zliang_ma/article/details/134978221
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。