-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.cpp
54 lines (47 loc) · 1.35 KB
/
main.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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <bits/stdc++.h>
int main()
{
int max_input_len = 40;
bool lastbuffernull = false;
int gamma[max_input_len];
memset(gamma, 0, sizeof(gamma));
int input_len = 0;
int gamma_decimal = 0;
int epsilon_decimal = 0;
while(!lastbuffernull){
char buffer[max_input_len];
std::cin.get(buffer, max_input_len );
if(strlen(buffer) != 0){
auto s = string_view(buffer);
std::cout << s << '\n';
int i = 0;
while(buffer[i] != '\0'){
if(buffer[i] == '0') {
gamma[i]--;
} else {
gamma[i]++;
}
std::cout << gamma[i];
i++;
}
std::cout << '\n';
input_len = i;
}
std::cin.ignore(10000, '\n');
if(strlen(buffer) == 0){
lastbuffernull = true;
}
}
int pow = 0;
while(input_len > 0){
if(gamma[input_len-1] > 0){ // only odd lengths (?)
gamma_decimal += std::pow(2,pow); //most common was 1
} else if(gamma[input_len-1] < 0) {
epsilon_decimal += std::pow(2,pow); //most common was 0
}
pow++;
input_len--;
}
std::cout << "pow_consumption: " << gamma_decimal * epsilon_decimal << '\n';
return 0;
}