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

Составьте по братски логическую схему по формуле под номером 2)


Составьте по братски логическую схему по формуле под номером 2)

Показать ответ
Ответ:
urybalka27
urybalka27
04.12.2022 04:42

#include <iostream>

using namespace std;

int main(){

   long long a;

   int n, bits[64]={0}, i=0;

   cin>>a>>n;

   while(a!=0){

       if(a%2==0)

           a/=2;

       else {

           bits[i]=1;

           a=(a-1)/2;

       }

       i++;

   }

   cout<<bits[n-1];

}

Я обнаружил несколько недочетов в условии. Во-первых, вызвало недоумение то, что сначала номер бита обозначен n, тогда как в диапазоне его значений используется уже буква b. Ладно, допустим, обычная опечатка. Во-вторых, для записи максимально возможного числа 10¹⁸ в двоичной системе потребуется 60 цифр, но здесь утверждается, что спросят не дальше 32 бита. Тогда зачем предусматривать столь большие a? В-третьих, только из примеров стало понятно, что биты нумеруются справа налево

0,0(0 оценок)
Ответ:
dnmsmd
dnmsmd
20.04.2023 23:11

(см. объяснение)

Объяснение:

Pascal:

var x, m, s, d: integer;

begin

 for i: integer := 1 to 150 do

 begin

   x:= i;

   m:= 0;

   s:= 0;

   while(x>0) do

   begin

     d:= x mod 7;

     s:= s+d;

     if(d>m) then

       m:= d;

     x:= x div 7;

   end;

   if((m=5) and (s=12)) then

     writeln(i);

 end;

end.

Python:

for i in range(1, 150):

   x = i

   m = s = 0

   while x > 0:

       d = x % 7

       s += d

       if d > m:

           m = d

       x //= 7

   if m == 5 and s == 12:

       print(i)

Аналитическое решение:

Перейдем в семеричную систему счисления. Тогда операция mod 7 будет получать последнюю цифру исходного числа. Заметим также, что в переменную m кладется максимальная цифра из введенного числа. Тогда нам нужно, чтобы цифра 5 стояла в разряде единиц и была наибольшей в числе. Понятно, что двузначное число, удовлетворяющее этим условиям, собрать нельзя. Предположим, что число трехзначное, начинающееся на 1. Тогда оно имеет вид 1?5, где ?≤5. Но 1+5+5<12, поэтому такой случай никогда не приведет к интересующему ответу. Пусть число имеет вид 2?5. Тогда 2+5+5=12, то есть число 255 нас устраивает. Переведя его в десятичную систему счисления, получаем, что ответом будет число 138.

Задание выполнено!

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