CS153/hw6/hw4programs/sp22_tests/evil.oat
jmug ee01a8f5b2 Change hw6 to an unsolved version.
Signed-off-by: jmug <u.g.a.mariano@gmail.com>
2025-01-24 23:10:01 -08:00

72 lines
1.2 KiB
Text

int pow (int a, int b) {
var out = 1;
while (b != 0) {
out = out * a;
b = b - 1;
}
return out;
}
int remainder (int a, int b) {
if (b == 0) {
print_string("Can't divide by 0");
return -1;
}
while (a >= b) {
a = a - b;
}
return a;
}
int divide (int a, int b) {
if (b == 0) {
print_string("Can't divide by 0");
return -1;
}
var out = 0;
while (a >= b) {
a = a - b;
out = out + 1;
}
return out;
}
int is_evil (int a) {
if (a < 0) {
return 0;
}
var cont = true;
var y = 0;
var num1 = 0;
var num2 = 0;
var r = 0;
var remctr = 0;
while (cont) {
num1 = pow(2, y);
r = remainder(a, num1);
if (r == a) {
cont = false;
} else {
y = y + 1;
}
}
for (var i = 0; i < y; i = i + 1;) {
num1 = pow(2, i);
num2 = divide(a, num1);
if (remainder(num2, 2) == 1) {
remctr = remctr + 1;
}
}
if (remainder(remctr, 2) == 0) {
return 1;
}
return 0;
}
int program(int argc, string[] argv) {
return is_evil(378);
}