Решение задачи Электронные таблицы с Codeforces

Без пояснения   Просмотров: 45


В популярных системах электронных таблиц (например, в программе Excel) используется следующая нумерация колонок. Первая колонка имеет номер A, вторая B и т.д. до 26-ой, которая обозначается буквой Z. Затем идут двухбуквенные обозначения: 27-ая обозначается как AA, 28-ая как AB, а 52-я обозначается парой AZ. Аналогично, следом за ZZ следуют трехбуквенные обозначения и т.д.

Строки обычно обозначаются целыми числами от 1. Номер ячейки получается конкатенацией обозначений для столбца и строки. Например, BC23 это обозначение для ячейки в столбце 55, строке 23.

Иногда используется другая форма записи: RXCY, где X и Y это целые числа, обозначающие номер строки и столбца, соответственно. Например, R23C55 это ячейка из примера выше.

Ваша задача написать программу, которая считывает последовательность обозначений ячеек и выводит каждое из обозначений в другой форме записи.

Код

#include <bits/stdc++.h>
using namespace std;

char s[20],col[20],row[20];
int X, Y;

int main(){
	int T;
	cin>>T;
	while(T--){
		scanf("%s", s);
		if(sscanf(s, "R%dC%d", &X, &Y) == 2){
			string C;
			while(Y){
				C+=(Y-1)%26+'A';
				Y=(Y-1)/26;
			}
			reverse(C.begin(), C.end());
			cout<<C<<X<<endl;
		}else{
			Y=0;
			int i;
			for(i=0; s[i]>='A' && s[i]<='Z'; ++i)
				Y=Y*26+s[i]-'A'+1;
			printf("R%sC%d\n", s+i, Y);
		}
	}
}

         

Администратор Photo Автор: Администратор



Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться