Advertisement
GeeckoDev

pe104

Feb 16th, 2012
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.69 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <malloc.h>
  3.  
  4. int pandigital(int* s)
  5. {
  6.   int m = 0, i;
  7.   for (i=0; i<9; i++) m |= 1 << s[i]-1;
  8.   return m == 0x1FF;
  9. }
  10.  
  11. int main()
  12. {
  13.   int *a, *b, *c, k=3, s=1, r, i;
  14.   a = malloc(sizeof(int));
  15.   b = malloc(sizeof(int));
  16.   *a = 1;
  17.   *b = 1;
  18.  
  19.   for (;;)
  20.   {
  21.     c = malloc((s+1) * sizeof(int));
  22.     c[s] = 0;
  23.    
  24.     r = 0;
  25.     for (i=0; i<s; i++)
  26.     {
  27.       c[i] = a[i] + b[i] + r;
  28.       r = c[i] / 10;
  29.       c[i] %= 10;
  30.     }
  31.     if (r > 0) c[s]=r, s++;
  32.    
  33.     if (s >= 18)
  34.     {
  35.       if (pandigital(c) && pandigital(c+s-9)) break;
  36.     }
  37.    
  38.     free(a);
  39.     a = b;
  40.     b = c;
  41.     k++;
  42.   }
  43.  
  44.   printf("%d\n", k);
  45.   return 0;
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement