-
Notifications
You must be signed in to change notification settings - Fork 0
/
bit.cpp
36 lines (32 loc) · 923 Bytes
/
bit.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
//Входное число лежит в диапазоне 0..232 -1 и вводится в десятичном виде.
//1.3 Если в числе содержится только один бит со значением 1, записать в выходной поток OK. Иначе записать FAIL
#include <iostream>
#include <cassert>
bool is_there_only_one_1bit(int N) {
assert(N >= 0);
if (N == 0){
return false;
}
unsigned short counter = 0;
unsigned int mask = 1;
for (int i = 0; i <= 32; i++) {
if ((N & mask) != 0) {
counter++;
if (counter != 1) {
return false;
}
}
mask = mask << 1;
}
return true;
}
int main() {
int N = 0;
std:: cin >> N;
if (!is_there_only_one_1bit(N)){
std::cout << "FAIL";
return 0;
}
std::cout << "OK";
return 0;
}