Предмет: Информатика,
автор: 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:
пж можете прислать ответ
Ответы
Автор ответа:
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? В-третьих, только из примеров стало понятно, что биты нумеруются справа налево
Похожие вопросы
Предмет: Русский язык,
автор: афанасий21
Предмет: Қазақ тiлi,
автор: 39582952
Предмет: Русский язык,
автор: Аноним
Предмет: Математика,
автор: kisya890
Предмет: Математика,
автор: данил2241