求助,测试的都过了,交上去之后是错的
  • 板块CF1B Spreadsheets
  • 楼主him0715
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/12/31 17:27
  • 上次更新2023/10/24 06:01:11
查看原帖
求助,测试的都过了,交上去之后是错的
705879
him0715楼主2022/12/31 17:27
#include <bits/stdc++.h>
using namespace std;
int lis[503],s[503],len;bool flag;
char li[26]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
int main(){
	int n;string tmp;
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>tmp;
		for(int i=0;i<tmp.size();i++){
			char c=tmp[i];int now=c-'0';
			if(now>=0 && now<=9)lis[i]++;
			if(i>3 && lis[i-2]==1 && lis[i-1]==0 && lis[i]==1)flag=false;
		}
		if(flag){
			int a=0,out=0,out2=0,cnt;
			for(int i=0;i<tmp.size();i++){
				char c=tmp[i];int now=c-'0';
				if(now>=0 && now<=9){a=i;break;}
			}
			for(int i=0;i<a;i++){
				char c=tmp[i];int now=c-'A'+1;
				out+=now*pow(26,a-i-1);
			}
			cout<<"R";
			for(int i=a;i<tmp.size();i++)cout<<tmp[i];
			cout<<"C"<<out<<endl;
		}
		else{
			bool b=true;int first=0,second=0;
			for(int i=1;i<tmp.size();i++){
				char c=tmp[i];
				if(c=='C'){b=false;continue;}
				int now=c-'0';
				if(b)first*=10,first+=now;
				else second*=10,second+=now;
			}
			int ss=0;
			while(second){
				int tmp=second%26;
				if(tmp==0)tmp=26;
				s[ss++]=tmp;
				second/=26;
			}
			for(int i=ss-1;i>=0;i--)cout<<li[s[i]-1];
			cout<<first<<endl;
	    }
	    flag=true;
	}
	return 0;
}
2022/12/31 17:27
加载中...