namereq

虫食い算

Jul 16th, 2018
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.97 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. #define N 9
  4.  
  5. double check(void);
  6. void printResult(void);
  7. void warm(int k);
  8.  
  9. int a[N];      
  10. int f[10];      
  11.  
  12. int main(void)
  13. {
  14.         warm(0);
  15.         return 0;
  16. }
  17.  
  18. double check(void){
  19. int x, y, z, chk;
  20.  
  21.         chk = (a[3] * 10 + a[4]) % a[5];
  22.         x = a[0] * 10 + a[1] - a[2];
  23.         y = (a[3] * 10 + a[4]) / a[5];
  24.         z = a[6] + a[7] * a[8];
  25.  
  26.         return chk == 0 && x == y && y == z;
  27. }
  28.  
  29. void printResult(void)
  30. {
  31.         printf("%d%d-%d=%d%d÷%d=%d+%d×%d\n", a[0], a[1], a[2], a[3], a[4], a[5], a
  32. [6], a[7], a[8]);
  33. }
  34.  
  35. void warm(int k)
  36. {
  37.         int i;
  38.  
  39.         if (k == N) {
  40.                 if (check()) printResult();
  41.         }
  42.         else {
  43.                 for (i = 1; i <= 9; i++) {
  44.                         if (f[i]) continue;    
  45.                         a[k] = i;
  46.                         f[i] = 1;
  47.                         warm(k + 1);
  48.                         f[i] = 0;
  49.                 }
  50.         }
  51. }
Advertisement
Add Comment
Please, Sign In to add comment