
Untitled
By: a guest on
Jun 17th, 2012 | syntax:
C++ | size: 0.66 KB | hits: 47 | expires: Never
#include <stdio.h>
#include <string.h>
#include <gmp.h>
#include <math.h>
char buf[1000000000];
bool isPan(unsigned int a) {
int mask = 0;
for (int i=0;i<9;i++) {
mask |= 1 << (a % 10);
a /= 10;
}
return mask == 0x3FE;
}
int main() {
unsigned int ra=1,rb=1,rc,k=1;
mpz_t p;
mpz_init(p);
while (1) {
if (isPan(ra)) {
printf("RIGHT %d %u\n", k, ra);
mpz_fib_ui(p, k);
mpz_get_str(buf, 10, p);
int mask = 0;
for (int i=0;i<9;i++) mask |= 1 << (buf[i]-'0');
if (mask==0x3FE) {printf("LEFT %d\n", k); break;}
}
// next
k++;
rc=(ra+rb)%1000000000; ra=rb; rb=rc;
}
}