44 lines
868 B
C++
44 lines
868 B
C++
|
|
#include <iostream>
|
||
|
|
#include <cstdint>
|
||
|
|
|
||
|
|
bool storable(int64_t n) {
|
||
|
|
double d = n;
|
||
|
|
int64_t n1 = int64_t(d);
|
||
|
|
return n1 == n;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
// Find the biggest number where the number is storable,
|
||
|
|
// and all numbers smaller are also storable.
|
||
|
|
int64_t find_biggest() {
|
||
|
|
int64_t v = 256;
|
||
|
|
int64_t best = 256;
|
||
|
|
while (true) {
|
||
|
|
for (int i = 0; i < 100; i++) {
|
||
|
|
if (!storable(v - i)) {
|
||
|
|
return best;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
best = v;
|
||
|
|
v <<= 1;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
int main(int argc, char **argv) {
|
||
|
|
int64_t best = find_biggest();
|
||
|
|
|
||
|
|
printf("%016lx ", best);
|
||
|
|
for (int i = -12; i <= 12; i++) {
|
||
|
|
if (i == 0) printf(" ");
|
||
|
|
if (storable(best + i)) {
|
||
|
|
printf("* ");
|
||
|
|
} else {
|
||
|
|
printf("- ");
|
||
|
|
}
|
||
|
|
if (i == 0) printf(" ");
|
||
|
|
}
|
||
|
|
printf("\n");
|
||
|
|
return 0;
|
||
|
|
}
|