fork(1) download
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. #define NUM 6561 // 3^8
  5. const char kigou[] = {'+','-','*'};
  6.  
  7. void print(int en[8])
  8. {
  9. int i;
  10. for (i = 0; i < 8; i++)
  11. printf("%1d%1c", i+1,kigou[en[i]]);
  12. printf("9=100\n");
  13. }
  14.  
  15. void eval(int en[8])
  16. {
  17. int num[9] = {1,2,3,4,5,6,7,8,9};
  18. int i, pm, sum;
  19. for (i = 0; i < 8; i++) {
  20. if (en[i] == 2) {
  21. num[i+1] = num[i] * num[i+1];
  22. num[i] = 0;
  23. }
  24. }
  25. for (i = 0; i < 8; i++) {
  26. if (num[i] != 0) {
  27. sum = num[i];
  28. break;
  29. }
  30. }
  31. for (; i < 8; i++) {
  32. if (en[i] == 0) {
  33. pm = 1;
  34. } else if (en[i] == 1) {
  35. pm = -1;
  36. }
  37. sum += num[i+1] * pm;
  38. }
  39. if (sum == 100) {
  40. print(en);
  41. }
  42. }
  43. void form(int en[8], int num)
  44. {
  45. int i;
  46. for (i = 0; i < 8; i++) {
  47. int y = num / 3;
  48. en[i] = num % 3;
  49. num = y;
  50. }
  51. }
  52.  
  53. int main()
  54. {
  55. int en[8];
  56. int i;
  57. for (i=0; i<NUM; i++) {
  58. memset(en, 0, sizeof(en));
  59. form(en,i);
  60. eval(en);
  61. }
  62. return 0;
  63. }
  64.  
Success #stdin #stdout 0.02s 2724KB
stdin
Standard input is empty
stdout
1*2*3*4+5+6+7*8+9=100
1-2+3*4*5+6*7+8-9=100
1-2+3*4*5-6+7*8-9=100
1+2+3+4+5+6+7+8*9=100
1*2*3+4+5+6+7+8*9=100
1-2*3+4*5+6+7+8*9=100
1+2*3+4*5-6+7+8*9=100
1-2*3-4+5*6+7+8*9=100
1+2-3*4+5*6+7+8*9=100
1*2*3*4+5+6-7+8*9=100
1-2*3-4-5+6*7+8*9=100
1+2-3*4-5+6*7+8*9=100
1+2+3-4*5+6*7+8*9=100
1*2*3-4*5+6*7+8*9=100