Roman numerals
Не усі числа менші за 2000, а лише вхідні дані.
Компилятор C++ Мы должны вернуть строку, но пишет, что main должен быть int. Как так?
А как правильно определить ету переменую в Пайтон
Складна задача, довго прийшлось "шурупати" мозгами
не могу никак реыть ету задачу киньте кто решение
С javascript работать невозможно. Попытался понять, что мне дают на вход: Оказалось это какой-то двумерный массив, размер которого меняется время от времени (я опытным путём определил, что там существуют элементы с индексами arr[6][3] и подобные)... (я это вычислял многоразовыми отправками, способом просмотра есть ли ошибка выполнения или нет). Шутники какие-то прям. Пытаться решить задачу для другого устройства если не знаешь его интерфейса это, конечно, очень весело, но не для меня.
Получилось решить эту задачу, не используя другие системы счисления. Подсказка: можно завести два списка для римских чисел, которые складываются и которые отнимаются.
,
include <iostream>
include <string>
using namespace std;
const string Rom[] = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I", ""}; const int Ar[] = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1, 0};
string Roman(int arab) { string roman; int i = 0; while(arab > 0) { while(Ar[i] <= arab) { roman += Rom[i]; arab -= Ar[i]; } ++i; } return roman; } int Arab(string roman) { int arab = 0, i = 0; while(roman != "") { while(Rom[i] == roman.substr(0, Rom[i].length())) { roman.replace(0, Rom[i].length(), ""); arab += Ar[i]; } ++i; } return arab; }
int main() { string first, second; char c; while((c = getchar()) != '+') first.push_back(c); while((c = getchar()) != '\n') second.push_back(c); cout << Roman(Arab(first) + Arab(second)) << endl; return 0; }