- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
String ExelCol(int col)
{
static const char c[] = { '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' };
String str;
if( !col ) return str;
while( true )
{
str.Insert( c[(col-1) % sizeof(c)], 1 );
if( ! ((col-1) / sizeof(c)) ) break;
col /= sizeof(c);
}
return str;
}
Exel такой Exel
странно что вот таких говнокодов мало вижу, бо на практике это часто встречается: народ пытается строку в число как-нить запихнуть. или два числа в одно число. и с еще булевым флагом. или еще чего в том же духе. причина - эпик фэйл понимания структурного программирование и/или навыков моделирования данных.
А дальше - сами смотрите. 1 миллион, говорите? В 26-ричной системе счисления это число должно записываться 5-ю знаками. Соответственно, ответ: код отработает за 5 итераций. И что тут "интересного"?
Вот ссылка, кому интересно:
http://codeforces.ru/problemset/problem/1/B
омг, брут
Дайте асю (или жаббер). Разговор есть.
А вот к использованию таблицы вместо вычисления целевого символа "формулой" придираться не стоит. Что лучше - вопрос неоднозначный. В данном случае я бы сказал что таблица даже лучше.
Я бы в данном случае может быт даже вот так извратнулся
чисто ради компактности записи.
и помнить, что 'sizeof' будет возвращать на 1 больше чем надо.
А то, что там сейчас написано начнет давать неправильный результат уже в конце каждого периода, начиная со второго. Для значения 'col = 52' этот код сгеренирует имя "BZ", вместо правильного "AZ".
int SIZE = 'Z' - 'A' + 1;
string str;
while(col > 0){
str = char(((col - 1) % SIZE) + 'A') + str;
col = (col - 1) / SIZE;
}
return str;
кодировкозависимо в общем
код изначально для дельфи был, а там char задейайнен
А сразу высчитать никак?
зачем? компилятор высчитает
Быдлокодер детектед.
надо писать на русском :)
так что понятный код - еще не значит понятен ВСЕМ
здесь никак не повлияет на конечный результат, поэтому можно писать и так.
да, это просто лишний повод потормозить!
например под виндой в вообще не запустится если в PATHTRANSLATED попали чужеродные символы
http://bugs.php.net/bug.php?id=37672
ha