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

Правильный подмногоугольник
ограничение по времени на тест2 секунды
ограничение по памяти на тест512 мебибайт
вводстандартный ввод
выводстандартный вывод
задан правильный n-угольник. требуется выбрать наименьшее количество его вершин, которые также образуют правильный многоугольник.

входные данные
входные данные содержат одно целое число n (3≤n≤1012).

выходные данные
выведите одно число — наименьшее количество вершин заданного многоугольника, которые образуют правильный многоугольник.

Показать ответ
Ответ:
kuraflin666
kuraflin666
11.05.2020 03:46

ответ:Вариант №1 (не совсем удачный, как было отмечено в комментариях).

//PascalABC.NET (версия 3.1, сборка 1210 от 29.03.2016)

var n,i,m:integer;

flag:boolean;

begin

 readln(n);

 flag:=false;

 if (n mod 2<>0)then i:=n-1 else i:=n;

 while i>0 do begin  

   if power(2,i)<=n then begin

     write(power(2,i),' '); flag:=true;

   end;

   i:=i-2;

end;

if not flag then writeln(0);

end.

Тест №1

1025

1024 256 64 16 4

Тест №2

1

0

Вариант №2

var a,i,n: integer;

begin

 a:=1;readln(n);

 i:=trunc(log2(n)); //получим степень двойки для n

 //если i нечетное,

 //то первое искомое число получаем путем сдвига влево на i-1 в

 //двоичном представлении числа иначе сдвиг на i

 if (i mod 2)=1 then a:=a shl(i-1) else a:=a shl i;

 //далее получаем числа сдвигая вправо на 2 разряда

 //в двоичном представлении числа

 while a>=2 do begin

   write(a,' ');

   a:=a shr 2;

 end;

end.

Тестовое решение:

2147483647

1073741824 268435456 67108864 16777216 4194304 1048576 262144 65536 16384 4096 1024 256 64 16 4

0,0(0 оценок)
Ответ:
Yorgen1
Yorgen1
21.05.2021 09:58

Сложение одноразрядных двоичных чисел выполняется по следующим правилам:

0 + 0 = 0

1 + 0 = 1

0 + 1 = 1

1 + 1 = 10

В последнем случае, при сложении двух единиц, происходит переполнение младшего разряда, и единица переносится в старший разряд. Переполнение возникает в случае, если сумма равна основанию системы счисления (в данном случае это число 2) или больше его (для двоичной системы счисления это не актуально).

Сложим для примера два любых двоичных числа:

1101

+ 101

10010

Вычитание

Вычитание одноразрядных двоичных чисел выполняется по следующим правилам:

0 - 0 = 0

1 - 0 = 1

0 - 1 = (заем из старшего разряда) 1

1 - 1 = 0

Пример:

1110

- 101

1001

Умножение

Умножение одноразрядных двоичных чисел выполняется по следующим правилам:

0 * 0 = 0

1 * 0 = 0

0 * 1 = 0

1 * 1 = 1

Пример:

1110

* 10

+ 0000

1110

11100

Деление

Деление выполняется так же как в десятичной системе счисления:

1110 | 10

|

10 | 111

11

10

10

10

0

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота