样例过了 #3错了
查看原帖
样例过了 #3错了
1048589
HuangBarry楼主2024/7/7 11:43
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n;
string s;
string m(int a);//Excel转RXCY
int w(string a);//RXCY转Excel
signed main(){
	cin>>n;
	while(n--){
		cin>>s;
		if(s.find('R')+1<s.find('C')&&s.find('R')<s.size()-3&&s.find('C')<s.size()-2){//RXCY转Excel
			int x=stoll(s.substr(s.find('R')+1,s.find('C')));//行
			int y=stoll(s.substr(s.find('C')+1,s.size()));//列
			cout<<m(y)<<x<<endl;
		}
		else{//Excel转RXCY
			string x;
			int y;
			for(int i=0;;i++)
				if(s[i]>='0'&&s[i]<='9'){
					x=s.substr(0,i);//列
					y=stoll(s.substr(i,s.size()));//行
					break;
				}
			cout<<"R"<<y<<"C"<<w(x)<<endl;
		}
	}
	return 0;
}
string m(int a){
	string ans="";
	while(a!=0){
		int c=a%26-1;
		if(c==-1)
			ans+="Z";
		else
			ans+=char('A'+c);
		a/=26;
	}
	reverse(ans.begin(),ans.end());
	return ans;
}
int w(string a){
	int len=a.size()-1,k=1,ans=0;
	for(int i=len;i>=0;i--){
		ans+=k*(a[i]-'A'+1);
		k*=26;
	}
	return ans;
}
2024/7/7 11:43
加载中...