Форум » Обработка целых чисел » Задание 17, задача 152 » Ответить

Задание 17, задача 152

GalinaG: Помогите, пожалуйста, разобраться Считаю, что если число отрицательное, то его надо перевести по алгоритму: 1. берем число по модулю 3. минус 1 4. переводим в восьмеричную с сч 5. инвертируем и только тогда находить последнюю цифру А в приведенном решении (питон), просто берется модуль числа и проверяется, что остаток от деления на 8 равен 3. Ведь, в задании речь идет именно о числе в восьмеричной системе (в том числе и для отрицательного)

Ответов - 11

cabanov.alexey: Считаю, что если число отрицательное, то его надо перевести по алгоритму: 1. берем число по модулю 3. минус 1 4. переводим в восьмеричную с сч 5. инвертируем и только тогда находить последнюю цифру И откуда вы взяли тот алгоритм? Где в задании сказано, что число кодируется дополнительным кодом (который кстати актуален только для двоичной записи при ограниченном размере двоичных знаков)?

GalinaG: в калькуляторе число -2536 перевела в восьмеричную сс получилось 1777777777777777773030 то есть именно по этому алгоритму

Поляков: GalinaG пишет: в калькуляторе число -2536 перевела в восьмеричную сс получилось 1777777777777777773030 Меня бы смутило, что из отрицательного числа получилось положительно.


GalinaG: Поляков пишет: Меня бы смутило, что из отрицательного числа получилось положительно. а первая единица не говорит о знаке?

cabanov.alexey: Мне кажется это была плохая идея. По крайней мере, очевидно что отрицательность понимается в десятичном понимании.

GalinaG: Можно тогда предположить, что задача не корректная Элементы последовательности должны принимать целые положительные значения либо заменить слова о восьмеричной системе счисления на "заканчивается на 3 при делении на 8"

christoph35: f=open('17-1.txt') n=[int(i) for i in f] count=0 maxx=0 for i in range(len(n)-1): if (n%9==0 and abs(n[i+1])%8==3)or(n[i+1]%9==0 and abs(n)%8==3): count+=1 maxx=max(maxx,n,n[i+1]) print(count,maxx)

OlgaChe1: либо заменить слова о восьмеричной системе счисления на "заканчивается на 3 при делении на 8" С этим не соглашусь, т.к. задача на программирование, а в разных языках остаток при делении отрицательных чисел считается по-разному: -11 mod 8 = 3 в Паскале и -11%8 = 5 в Питоне. Условие не корректное. И нигде не сказано, что отрицательные числа представлены в позиционных системах счисления через абсолютную величину.

Поляков: OlgaChe1 пишет: И нигде не сказано, что отрицательные числа представлены в позиционных системах счисления через абсолютную величину. А какие еще возможны варианты?

Ларова С.: Решение на паскале var x, y, count: longint; m: longint; begin assign(input,'17-1.txt'); readln(x); m := 0; count := 0; while (not eof()) do begin readln(y); if ((x mod 9 = 0) and (y mod 9 <> 0) and (abs(y) mod 8 = 3) ) xor ((y mod 9 = 0) and (x mod 9 <> 0) and (abs(x) mod 8 = 3))then begin count := count + 1; m:=max(y,x,m); end; x := y; end; writeln(count, ' ', m); end.

Лаврова С.: Автор: Лаврова С.



полная версия страницы