求助各位大佬,WA6, RUNTIME ERROR
查看原帖
求助各位大佬,WA6, RUNTIME ERROR
609811
accccccc楼主2022/6/22 10:48
#include <iostream>
#include <cmath>
#include <cstring>
#include <string>
#include <map> 
#include <set>
#include <stack>
#include <ctime>
#include <queue>
#include <algorithm>
#define ll long long
#define INF 0x3f3f3f3f
using namespace std;
const int N = 1e6+100;
const int MAX = 1e9+10;
/*
	
*/

int rem[N];
int rec[N];
char alp[30];
int k = 1;
void getAlpha() {
	char p = 'A';
	for(int i = 1; i <= 26; ++i, ++p) {
		alp[i] = p;
//		cout << i << " " << alp[i] << endl;
	}
}
void convert26(int n) {
	while(n) {
		rem[k++] = n % 26;
		n /= 26;
	}
}
//十进制转26进制 
void output() {
	for(int i = k-1; i >= 1; --i) {
		if(alp[rem[i]] != ' ' && alp[rem[i]])
			cout << alp[rem[i]];
	}	
}
//串(26进制)转10进制, 
void output2(string s) {
	int k=0;
	for(int i = 0; i < s.size(); ++i) {
		rec[++k] = (s[i] - 'A' + 1);
//		cout << rec[k] << " ";
	}
	int sum = 0;
	getAlpha();
	if(s.size() == 1) {
		cout << (s[0] - 'A' + 1);
		return;
	}
	sum += rec[1] * 26 + rec[2];
	for(int i = 3; i <= k; ++i) {
		sum = sum * 26 + rec[i];
	}
	cout << sum;
}
int main() {
	ios::sync_with_stdio(false);  cin.tie(0);
	//十进制转换成26进制
	int n;
	cin >> n;
	while(n--) {
		string s;
		cin >> s;
		if(s[0] == 'R') {
			int st = 0, ed = 0;
			for(int i = 0; i < s.size(); ++i) {
				if(s[i] == 'C') {
					st = 1;
					ed = i-1;
					break;
				}
			} 
	//		cout << st << " " << ed;
			string row = s.substr(st,ed);
			//将C后面的十进制数字转换成26进制
			for(int i = 0; i < s.size(); ++i) {
				if(s[i] == 'C') {
					st = i+1;
					ed = s.size()-1;
					break;
				}
			} 
			string col = s.substr(st,ed);
			int coln = stoi(col);
			memset(rem,0,sizeof(rem));
			memset(alp,0,sizeof(alp));
			convert26(coln);
			getAlpha();
			output(); 
			cout << row << endl;
		} else {
			int st = 0, ed = 0;
			for(int i = 0; i < s.size(); ++i) {
				if(isdigit(s[i])) {
					st = i;
					ed = s.size()-1;
					break;
				}
			}
			string row = s.substr(st,ed);
			for(int i = 0; i < s.size(); ++i) {
				if(isdigit(s[i])) {
					st = 0;
					ed = i;
					break;
				}
			}
			string col = s.substr(st,ed);
			cout << "R" << row << "C";
			memset(rec,0,sizeof(rec));
			memset(alp,0,sizeof(alp));
			output2(col);
			cout << endl;
		}
	}	
	return 0;
}    
2022/6/22 10:48
加载中...