196

#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <cctype>
#include <string>
#include <cmath>
#include <sstream>

using namespace std;

string str[1000][18279];
int val[1000][18279];
bool isDone[1000][18279];
int C,R;

int solve(int a,int b)
{
	if(isDone[a][b])
	return val[a][b];
	string tmpstr;

	for(int i=0;i<str[a][b].size();i++)
	{
		if(str[a][b][i]=='=' || str[a][b][i]=='+')
		{
			str[a][b][i]=' ';
		}
	}
	stringstream ss;
	ss<<str[a][b];

	int sum = 0;
	tmpstr="";
	while(ss>>tmpstr)
	{
		int r = 0;
		int c = 0;
		for(int j=0;j<tmpstr.size();j++)
		{
			if(tmpstr[j]>='0' && tmpstr[j]<='9')
			{
				r=r*10+(tmpstr[j]-'0');
			}
			else
			{
				c = c*26+(tmpstr[j]-'A'+1);
			}
		}
		int tt = solve(r,c);
		sum+=tt;

	}
	isDone[a][b]=1;
	return (val[a][b]=sum);
}


int toint(string st)
{
	int sum = 0;
	for(int i=0;i<st.size();i++)
	{
		sum = sum*10+(st[i]-'0');
	}
	return sum;
}

int main()
{
	int t;
	cin>>t;

	while(t--)
	{
		cin>>C>>R;

		for(int i=1;i<=R;i++)
		{
			for(int j=1;j<=C;j++)
			{
				cin>>str[i][j];
				isDone[i][j]=0;
				if(str[i][j][0]>='0' && str[i][j][0]<='9')
				{
					val[i][j]=toint(str[i][j]);
					isDone[i][j]=1;
				}
			}
		}
		for(int i=1;i<=R;i++)
			for(int j=1;j<=C;j++)
				cout<<solve(i,j)<<(j==C?"\n":" ");
	}
	return 0;
}

 

Leave a Reply

Your email address will not be published. Required fields are marked *