如题,CF1B第六测试点RE,因为测试数据过长无法复制而难以进行本地模拟,故发帖求助
代码如下
using namespace std;
string b[100000];
int a;
string e;
int main(){
cin >> a;
for (int i = 0; i < a;i++){
cin >> e;
if (e.find('R') == 0 && e.find('C') != 1){
string b1 = e.substr(1, e.find('C') - 1);
string b2 = e.substr(e.find('C') + 1);
int c = stoi(b2);
char d[100];
memset(d, 'A' - 1, sizeof(d));
for (int j = 0; j < c;j++){
d[0]++;
for (int k = 0; k < 100;k++){
if(d[k]=='Z'+1){
d[k] = 'A';
d[k + 1]++;
}
}
}
for (int k = 1; k <= 100;k++)
if(d[100-k]!='A'-1)
b[i] += d[100 - k];
b[i] += b1;
}
else{
int j = 0;
while(j<e.size()){
if(e[j]<='9'&&e[j]>='0')
break;
j++;
}
string b2 = e.substr(0, j);
string b1 = e.substr(j);
j = 0;
while(b2[b2.size()-1]!='A'-1){
b2[b2.size() - 1]--;
j++;
if(b2[b2.size()-1]=='A'-1)
for (int k = 1; k < b2.size();k++)
if(b2[b2.size()-k]=='A'-1&&b2[b2.size()-k-1]!='A'-1){
b2[b2.size() - k] = 'Z';
b2[b2.size() - k - 1]--;
}
}
b[i] = "R" + b1 + "C" + to_string(j);
}
}
for (int i = 0; i < a;i++)
cout << b[i] << endl;
return 0;
}
无论如何,先感谢各位大佬的阅读