e-olymp
favorite Нам необходимо немного Вашей помощи чтобы сайт продолжал работать, нажмите на банер чтобы узнать больше.
Задачи

Римские числа

опубликовано 07.06.2015, 16:21:47

Не усі числа менші за 2000, а лише вхідні дані.

опубликовано 08.04.2016, 13:01:45

Компилятор C++ Мы должны вернуть строку, но пишет, что main должен быть int. Как так?

опубликовано 27.05.2016, 22:39:50

А как правильно определить ету переменую в Пайтон

опубликовано 16.03.2018, 15:56:30

Складна задача, довго прийшлось "шурупати" мозгами

опубликовано 05.11.2018, 23:52:43

Авторе протестуйте ось цей код і скажіть Чи по логічному він працює. s = str(input()) s1 = str() s2 = str() y = 0 p = 0 for i in range(0, len(s)): if s[i] != "+": s1 += s[i] else: y = i break for i in range(y + 1, len(s)): s2 += s[i] print(s1, s2) k = 0 for i in range(0, len(s1)): if s1[i] == "I" and i > 0 and s1[i - 1] == "V" or s1[i] == "I" and i > 0 and s1[i - 1] == "X" or s1[i] == "I" and i > 0 and s1[i - 1] == "L" or s1[i] == "I" and i > 0 and s1[i - 1] == "C" or s1[i] == "I" and i > 0 and s1[ i - 1] == "D" or s1[i] == "I" and i > 0 and s1[i - 1] == "M": p -= 1 k = 1 else: if s1[i] == "I": p += 1 elif s1[i] == "V": p += 5 elif s1[i] == "X": p += 10 elif s1[i] == "L": p += 50 elif s1[i] == "C": p += 100 elif s1[i] == "D": p += 500 else: p += 1000 if k == 1: i += 1 k == 0 for i in range(0, len(s2)): if s2[i] == "I" and i > 0 and s2[i - 1] == "V" or s2[i] == "I" and i > 0 and s2[i - 1] == "X" or s2[i] == "I" and i > 0 and s2[i - 1] == "L" or s2[i] == "I" and i > 0 and s2[i - 1] == "C" or s2[i] == "I" and i > 0 and s2[ i - 1] == "D" or s2[i] == "I" and i > 0 and s2[i - 1] == "M": p -= 1 k += 1 else: if s2[i] == "I": p += 1 elif s2[i] == "V": p += 5 elif s2[i] == "X": p += 10 elif s2[i] == "L": p += 50 elif s2[i] == "C": p += 100 elif s2[i] == "D": p += 500 else: p += 1000 if k == 1: i += 1 str = str() while p >= 1000: p -= 1000 str += "M" if p == 999: p -= 999 str += "MI" while p >= 500: p -= 500 str += "D" if p == 499: p -= 499 str += "DI" while p >= 100: p -= 100 str += "C" if p == 99: p -= 99 str += "CI" while p >= 50: p -= 50 str += "L" if p == 49: p -= 49 str += "LI" while p >= 10: p -= 10 str += "X" if p == 9: p -= 9 str += "XI" while p >= 5: p -= 5 str += "V" if p == 4: p -= 4 str += "VI" while p >= 1: p -= 1 str += "I" print(str)

опубликовано 02.03.2019, 12:11:08

не могу никак реыть ету задачу киньте кто решение

опубликовано 03.11.2019, 22:20:54

git hut can you put this code in github?

опубликовано 23.11.2019, 13:25:02

"""RUM REQEMLERI"""

def nums(x): case={ "X":10, "L":50, "D":500, "C":100, "V":5, "I":1, }

return case.get(x)

def netice(y): #netice ingilis dinlinde nedi ona bax! = result

case={
    0:None,
    1:"I",
    4:"IV",
    5:"V",
    9:"IX",
    10:"X",
    50:"L",
    100:"C",
    500:"D",
}
ll = case.keys()
ld = list(ll)
aa = 7
ccc = y
ddd = []
ok = 1
aze =1
for i in range(len(case)):
    while y>=0 and aa>=0:
        if ld[aa]<=y:
            if(aa!=8):
                if ld[aa+1] <= y:
                    aze+=1
                    print(aze,'\taze')
                    y -= ld[aa+1]
                    print(y,'\tssaaaaaascs')
                    ddd += [case.get(ld[aa+1])]
                    aa+=1
            else:
                print("----------------------------")
                y -= ld[aa]
                print(y,'\tssscs')
                ddd += [case.get(ld[aa])]
                print(ddd,'\tddd')
                ok+=1
                print(ok,'ok')

        aa -=1
        print(aa,'\taa')
    return ddd


print("\n")

return case.get(y)

def tapici(ll): cc = [] dd = 0 for i in range(len(ll)): if ll[i] == "None": cc += [] else: cc += [ll[i]] for i in range(len(cc)): dd +=int(cc[i])

return dd

num = input()

other =[] numlis=list(num)

for i in range(len(numlis)): other.append(str(nums(numlis[i])))

for i in range(len(other)): if i<=len(other)-1: if other[i]=="1" and other[i+1]=="5": other[i] = str(int(other[i+1])-int(other[i])) del other[i+1] if other[i]=="1" and other[i+1]=="10": other[i]= str(int(other[i+1])-int(other[i])) del other[i+1]

print (other)

ll =[] ll +=[str(tapici(other))] ff = ll[0] print(ff,'fffffffffff')

bb = [] bb += netice(int(ff)) sss='' if len(bb)>1: for i in range(len(bb)): sss += bb[i] print("CAVAB:\t",sss,end =None) else: print("CAVAB\t",bb[0],end=None)

опубликовано 27.06.2020, 14:28:11

С javascript работать невозможно. Попытался понять, что мне дают на вход: Оказалось это какой-то двумерный массив, размер которого меняется время от времени (я опытным путём определил, что там существуют элементы с индексами arr[6][3] и подобные)... (я это вычислял многоразовыми отправками, способом просмотра есть ли ошибка выполнения или нет). Шутники какие-то прям. Пытаться решить задачу для другого устройства если не знаешь его интерфейса это, конечно, очень весело, но не для меня.

опубликовано 24.08.2020, 12:02:01

Получилось решить эту задачу, не используя другие системы счисления. Подсказка: можно завести два списка для римских чисел, которые складываются и которые отнимаются.

опубликовано 07.11.2020, 17:49:16

c++

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; }