#include #include #include #define MAX_R 20 unsigned short int valid(unsigned short int*p, unsigned short int r); void calc_next_pow(unsigned short int*p); int main() {FILE *end1;int bignum = 500;int rot; int a; time_t timer; unsigned short int pow_two[MAX_R]; unsigned long int power=0; int z;unsigned short int r; end1 = fopen("answer.dat","a"); for (z=0;z<(MAX_R-1);z++)pow_two[z]=0; pow_two[MAX_R-1]=1; for (r=1;r<=MAX_R;r++) {while (!valid(pow_two,r)) {if(power>=89) {power += bignum; rot = bignum; } else {power++; rot = 1; } a=1; do {calc_next_pow(pow_two); a += 1; } while (a<=rot); } time(&timer); printf("r = %hd Power of 2 is %ld %s",r,power,ctime(&timer)); fprintf(end1,"r = %hd Power of 2 is %ld %s",r,power,ctime(&timer)); } return(0); } unsigned short int valid(unsigned short int*p, unsigned short int r) {int i; for(i=MAX_R-r;i=0;i--) {p[i]+=p[i]+carry; if (p[i]>9) {p[i]-=10; carry=1; } else carry=0; } }