#6WA,求调,悬关
查看原帖
#6WA,求调,悬关
681941
OIer_Hhy楼主2024/3/19 18:34
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n;
string s,t=" ABCDEFGHIJKLMNOPQRSTUVWXYZ";
string solve1(string s){
	string res="";
	int r=0,c=0,i=1;
	while(isdigit(s[i])){
		r=r*10+s[i]-48;
		i++;
	}
	i++;
	while(isdigit(s[i])){
		c=c*10+s[i]-48;
		i++;
	}
	while(r){
		res=char(r%10+48)+res;
		r/=10;
	}
	while(c){
		if(c%26==0){
			res='Z'+res;
			c=c/26-1;
		}
		else{
			res=t[c%26]+res;
			c/=26;
		}
	}
	return res;
}
string solve2(string s){
	int i=0,ret=0;
	string tmp="",res="R";
	while(isalpha(s[i])){
		tmp+=s[i];
		i++;
	}
	while(isdigit(s[i])){
		res+=s[i];
		i++;
	}
	res+='C';
	for(int i=0;i<tmp.size();i++){
		if(tmp[i]!='Z')
			ret+=t.find(tmp[i])*pow(26,tmp.size()-i-1);
		else ret+=26*pow(26,tmp.size()-1-i);
	}	
	tmp="";
	while(ret){
		tmp+=ret%10+48;
		ret/=10;
	}
	reverse(tmp.begin(),tmp.end());
	res+=tmp;
	return res;
}
signed main(){
	cin>>n;
	while(n--){
		cin>>s;
		if(s[0]=='R'&&s[1]!='C') cout<<solve1(s)<<endl;
		else cout<<solve2(s)<<endl;
	}
	return 0;
}





2024/3/19 18:34
加载中...