Автор | Сообщение |
|
Отправлено: 31.10.21 10:40. Заголовок: Задание 17, задача 152
Помогите, пожалуйста, разобраться Считаю, что если число отрицательное, то его надо перевести по алгоритму: 1. берем число по модулю 3. минус 1 4. переводим в восьмеричную с сч 5. инвертируем и только тогда находить последнюю цифру А в приведенном решении (питон), просто берется модуль числа и проверяется, что остаток от деления на 8 равен 3. Ведь, в задании речь идет именно о числе в восьмеричной системе (в том числе и для отрицательного)
|
|
|
Новых ответов нет
[см. все]
|
|
|
Отправлено: 31.10.21 14:03. Заголовок: Считаю, что если чи..
цитата: | Считаю, что если число отрицательное, то его надо перевести по алгоритму: 1. берем число по модулю 3. минус 1 4. переводим в восьмеричную с сч 5. инвертируем и только тогда находить последнюю цифру |
| И откуда вы взяли тот алгоритм? Где в задании сказано, что число кодируется дополнительным кодом (который кстати актуален только для двоичной записи при ограниченном размере двоичных знаков)?
|
|
|
|
Отправлено: 31.10.21 14:51. Заголовок: в калькуляторе число..
в калькуляторе число -2536 перевела в восьмеричную сс получилось 1777777777777777773030 то есть именно по этому алгоритму
|
|
|
|
| Администратор
|
Сообщение: 2986
|
|
Отправлено: 31.10.21 19:19. Заголовок: GalinaG пишет: в кал..
GalinaG пишет: цитата: | в калькуляторе число -2536 перевела в восьмеричную сс получилось 1777777777777777773030 |
|
Меня бы смутило, что из отрицательного числа получилось положительно.
|
|
|
|
Отправлено: 31.10.21 20:01. Заголовок: Поляков пишет: а ..
Поляков пишет: цитата: | Меня бы смутило, что из отрицательного числа получилось положительно. |
| а первая единица не говорит о знаке?
|
|
|
|
Отправлено: 31.10.21 19:15. Заголовок: Мне кажется это была..
Мне кажется это была плохая идея. По крайней мере, очевидно что отрицательность понимается в десятичном понимании.
|
|
|
|
Отправлено: 31.10.21 20:32. Заголовок: Можно тогда предполо..
Можно тогда предположить, что задача не корректная Элементы последовательности должны принимать целые положительные значения либо заменить слова о восьмеричной системе счисления на "заканчивается на 3 при делении на 8"
|
|
|
|
Отправлено: 28.12.21 06:25. Заголовок: Вот моя программа ,но ответ не совпадает, может кто сказать, что здесь не так?
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)
|
|
|
|
Отправлено: 26.01.22 21:09. Заголовок: либо заменить слова ..
цитата: | либо заменить слова о восьмеричной системе счисления на "заканчивается на 3 при делении на 8" |
| С этим не соглашусь, т.к. задача на программирование, а в разных языках остаток при делении отрицательных чисел считается по-разному: -11 mod 8 = 3 в Паскале и -11%8 = 5 в Питоне. Условие не корректное. И нигде не сказано, что отрицательные числа представлены в позиционных системах счисления через абсолютную величину.
|
|
|
|
| Администратор
|
Сообщение: 3236
|
|
Отправлено: 26.01.22 21:15. Заголовок: OlgaChe1 пишет: И ни..
OlgaChe1 пишет: цитата: | И нигде не сказано, что отрицательные числа представлены в позиционных системах счисления через абсолютную величину. |
|
А какие еще возможны варианты?
|
|
|
|
Отправлено: 07.02.22 00:36. Заголовок: Решение на паскале
Решение на паскале 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.
|
|
|
|
Отправлено: 07.02.22 00:39. Заголовок: Автор: Лаврова С...
Автор: Лаврова С.
|
|
|
|