求助#6RE
  • 板块CF1B Spreadsheets
  • 楼主Erwwyh
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/10/11 19:41
  • 上次更新2023/10/27 07:52:05
查看原帖
求助#6RE
790579
Erwwyh楼主2022/10/11 19:41

如题,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;
}

无论如何,先感谢各位大佬的阅读

2022/10/11 19:41
加载中...