В
Все
Б
Биология
Б
Беларуская мова
У
Українська мова
А
Алгебра
Р
Русский язык
О
ОБЖ
И
История
Ф
Физика
Қ
Қазақ тiлi
О
Окружающий мир
Э
Экономика
Н
Немецкий язык
Х
Химия
П
Право
П
Психология
Д
Другие предметы
Л
Литература
Г
География
Ф
Французский язык
М
Математика
М
Музыка
А
Английский язык
М
МХК
У
Українська література
И
Информатика
О
Обществознание
Г
Геометрия
lusindrastsr
lusindrastsr
22.01.2021 13:49 •  Информатика

По проге!
макс и даниил играют в игру.

даниил написал на доске все целые числа от 1 до n. теперь он будет стирать числа, а макс должен указывать, какие числа следует стереть.

позиции чисел нумеруются слева направо, начиная с единицы. каждый раз, пока на доске остаются не менее двух чисел, макс может попросить даниила стереть либо все числа на чётных позициях, либо все числа на нечётных позициях.

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

макс победит в игре, если последним числом, оставшимся на доске, будет x. максу правильно указать даниилу, какие числа нужно стирать.

примеры
входные данные
10 1
выходные данные
0 0 0 0
входные данные
10 10
выходные данные
1 0 0 1

уменя такой код: (выдает тайм лимит)
n, x = map(int,
l = [i for i in range(1, n + 1)]
while n > 1:
if n % 2 == 1 and x % 2 == 1:
n //= 2
n += 1
else:
n //= 2
if x % 2 == 0:
print(1, end = ' ')
else:
print(0, end = ' ')
if x % 2 == 1:
x //= 2
x += 1
else:
x //= 2

можно записать так:
n, x = map(int,
l = [i for i in range(1, n + 1)]
while n > 1:
n = n // 2 + (n % 2 + x % 2) // 2
print(abs(x % 2 - 1), end = ' ')
x = (x + x % 2) // 2

Показать ответ
Ответ:
Zlata2828
Zlata2828
21.03.2022 11:20

program rome_arabic;

Uses crt;

Const

{римские цифры}

RomeDigits:string='IVXLCDM';

{числа - соответствующие римским цифрам}

ArabicNumbers:array [1..7] of integer =

(1, 5, 10, 50, 100, 500, 1000);

(*

Функция определения правильности ввода арабского числа

*)

function IsArabic(s:string):boolean;

var i,t,c:integer;

begin

IsArabic:=true;

for i:=1 to length(s) do

if not(s[i] in ['0'..'9'])then

begin

IsArabic:=false;

exit;

end;

val(s,t,c);

if (c<>0)or(t<1) then

begin

IsArabic:=false;

exit;

end;

end;

(*

Функция перевода арабского числа в римское

*)

function ArabicToRome (s: string): string;

var

i,n,c: integer;

res: string;

begin

val(s,n,c);

res:='';

i:=7; {Проверяем от больших чисел к меньшим}

while n>0 do

begin

{находим следующее число - из которого будем формировать римскую цифру}

while ArabicNumbers[i]>n do i:=i-1;

res:=res+RomeDigits[i];

n:=n-ArabicNumbers[i];

end;

ArabicToRome := res;

end;

(*

Функция определения правильности ввода римского числа

*)

function IsRome(s:string):boolean;

var i:integer;

begin

IsRome:=true;

if s='' then

begin

IsRome:=false;

exit;

end;

for i:=1 to length(s) do

if not (s[i] in ['I', 'V', 'X', 'L', 'C', 'D', 'M']) then

begin

IsRome:=false;

break;

end;

end;

(*

Функция перевода римского числа в арабское

*)

function RomeToArabic (s: string): integer;

var

b:array[1..100] of integer;

i,j:integer;

res:integer;

begin

for i:=1 to length(s) do

begin

if s[i]='I' then b[i]:=1;

if s[i]='V' then b[i]:=5;

if s[i]='X' then b[i]:=10;

if s[i]='L' then b[i]:=50;

if s[i]='C' then b[i]:=100;

if s[i]='D' then b[i]:=500;

if s[i]='M' then b[i]:=1000;

end;

res:=b[1];{массив локальная переменная и

сравнение первого элемента с нулевым искажает число,

почему-то считает, что b[0]=1 и автоматом вычитает 2}

for i:=2 to length(s) do

begin

res:=res+b[i];

if b[i-1]<b[i] then res:=res-2*b[i-1]{вот здесь}

end;

RomeToArabic:=res;

end;

{Основная программа}

var

arabic: string; {арабское число}

rome: string; {римское число}

ask: char; {режим перевода чисел}

begin

clrscr;

writeln('Программа переводит римское число в арабское или арабское в римское');

repeat

clrscr;

writeln('Выберите режим перевода:');

writeln('1 - римское число в арабское');

writeln('2 - арабское число в римское');

writeln('другое - выход');

ask:=readkey;

case ask of

'1': begin {Римское в арабское}

write('Введите римское число: ');

readln(rome);

if IsRome(rome) then

writeln('Арабское число = ',RomeToArabic(rome))

else writeln('В римской записи числа допущены ошибки! Перевод не возможен!');

writeln('Press Enter...');

readln

end;

'2':begin {арабское в римское}

write('Введите арабское число: ');

readln(arabic);

if IsArabic(arabic) then

writeln('Римская запись = ',ArabicToRome(arabic))

else writeln('В арабской записи числа допущены ошибки! Перевод не возможен!');

writeln('Press Enter...');

readln

end;

else exit;

end;

until not(ask in ['1','2']);

end.

0,0(0 оценок)
Ответ:
olgavoronina19
olgavoronina19
06.09.2022 07:50

C++

#include <iostream>#include <vector>int main () {    int a, b, c;    std::cin >> a >> b >> c;    std::vector list {a, b, c};    bool is_it_correct =            std::find_if(list.begin(), list.end(), [](auto el){ return el > 0; }) != list.end() &&            std::find_if(list.begin(), list.end(), [](auto el){ return el < 0; }) != list.end();    if (is_it_correct)        std::cout << "YES" << std::endl;    else        std::cout << "NO" << std::endl;}
C++, python Задано три цілих числа a, b, c. У відповідь потрібно вивести YES, якщо серед них є хоча
C++, python Задано три цілих числа a, b, c. У відповідь потрібно вивести YES, якщо серед них є хоча
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота