Предмет: Информатика, автор: nonimazera

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

Язык с++

Приложения:

nonimazera: пж можете прислать ответ
kiras06: прошу, покажи решение задачи № H1, G1 и C1. Пожалуйста
LymarIvan: чел...

Ответы

Автор ответа: LymarIvan
2

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


nonimazera: спасибо
Похожие вопросы
Предмет: Русский язык, автор: афанасий21
Предмет: Математика, автор: kisya890