G3. Проверка значения бита Ограничение времени 1 секунда
Ограничение памяти 64Mb
Ввод стандартный ввод или input.txt
Вывод стандартный вывод или output.txt
Заданы два числа
a
и
n
. Проверить, присутствует ли в записи числа
a
n
–й бит. В данной задаче биты нумеруются с единицы.
Формат ввода
Входные данные содержат два целых числа
a и n (0≤a≤1018, 1≤b≤32).
Формат вывода Выведите 1, если в записи числа a присутствует n–й бит, и 0 в противном случае.
Пример 1
Ввод Вывод1
6
0
Пример 2
Ввод Вывод1
6 2
Язык с++


G3. Проверка значения бита Ограничение времени 1 секунда Ограничение памяти 64Mb Ввод стандартный вв

Танюшксав Танюшксав    2   21.07.2021 19:51    2

Ответы
Dariapororor Dariapororor  20.08.2021 21:30

#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? В-третьих, только из примеров стало понятно, что биты нумеруются справа налево

ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика