题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=5308
解题思路:
尽可能的凑成24,多余的用(n-n)*n*n*·····*n=0消掉
AC代码:
#include <iostream> #include <cstdio> using namespace std; int main(){ int i,n; while(~scanf("%d",&n)){ if(n <= 3) printf("-1\n"); else if(n == 4){ printf("1 * 2\n");// 5 n*n printf("5 + 3\n");// 6 5*n printf("6 + 4\n");// 7 6*n } else if(n == 5){ printf("1 / 2\n");// 6 1 printf("6 / 3\n");// 7 1/5 printf("4 - 7\n");// 8 24/5 printf("5 * 8\n");// 9 24 } else if(n == 6){ printf("1 + 2\n"); printf("7 + 3\n"); printf("8 + 4\n"); printf("9 + 5\n"); printf("10 - 6\n"); } else if(n == 7){ printf("1 / 2\n");// 8 1 printf("3 * 4\n");// 9 n*n printf("9 - 8\n");// 10 48 printf("5 + 6\n");// 11 2*n printf("10 / 11\n");// 12 48/14 printf("12 * 7\n");// 13 24 } else if(n == 8){ printf("1 - 2\n");// 9 0 printf("9 * 3\n");// 10 0 printf("10 * 4\n");// 11 0 printf("11 * 5\n");// 12 0 printf("12 + 6\n");// 13 n printf("13 + 7\n");// 14 2*n printf("14 + 8\n");// 15 3*n } else if(n == 9){ printf("1 / 2\n");// 10 1 printf("3 / 4\n");// 11 1 printf("5 / 6\n");// 12 1 printf("7 + 8\n");// 13 2*n printf("13 + 9\n");// 14 3*n printf("14 - 10\n");// 15 26 printf("15 - 11\n");// 16 25 printf("16 - 12\n");// 17 24 } else if(n == 10){ printf("1 / 2\n");// 11 1 printf("3 / 4\n");// 12 1 printf("5 / 6\n");// 13 1 printf("7 / 8\n");// 14 1 printf("9 + 10\n");// 15 2*n printf("11 + 12\n");// 16 2 printf("16 + 13\n");// 17 3 printf("17 + 14\n");// 18 4 printf("18 + 15\n");// 19 24 } else if(n == 11){ printf("1 + 2\n");// 12 2*n printf("3 / 4\n");// 13 1 printf("5 / 6\n");// 14 1 printf("12 + 13\n");// 15 23 printf("15 + 14\n");// 16 24 printf("7 - 8\n");// 17 0 for(int i = 9; i < 12; i++) printf("%d * %d\n",i,i+8); printf("16 + 20\n"); } else if(n == 12){ printf("1 + 2\n");// 13 24 printf("3 - 4\n");// 14 0 for(i = 5; i < 13; i++) printf("%d * %d\n",i,i+9); printf("13 + 22\n"); } else if(n == 13){ printf("1 + 2\n");// 14 26 printf("14 / 3\n");// 15 2 printf("4 / 5\n");// 16 1 printf("6 - 16\n");// 17 12 printf("15 * 17\n");// 18 24 printf("7 - 8\n");// 19 0 for(i = 9; i < 14; i++) printf("%d * %d\n",i,i+10); printf("18 + 24\n"); } else if(n == 14){ printf("1 / 2\n");// 15 1 printf("3 / 4\n");// 16 1 printf("5 - 15\n");// 17 13 printf("17 - 16\n");// 18 12 printf("6 + 7\n");// 19 28 printf("19 / 8\n");// 20 2 printf("20 * 18\n");// 21 24 printf("9 - 10\n");// 22 0 for(i = 11; i < 15; i++) printf("%d * %d\n",i,i+11); printf("21 + 26\n"); } else{ printf("1 + 2\n");// n+1 2*n printf("3 + 4\n");// n+2 2*n printf("5 + 6\n");// n+3 2*n printf("7 + 8\n");// n+4 2*n printf("%d + 9\n",n+1);// n+5 3*n printf("%d / 10\n",n+2);// n+6 2 printf("%d / 11\n",n+3);// n+7 2 printf("%d / 12\n",n+4);// n+8 2 printf("%d / 13\n",n+5);// n+9 3 printf("%d * %d\n",n+6,n+7);// n+10 4 printf("%d * %d\n",n+8,n+9);// n+11 8 printf("%d * %d\n",n+10,n+11);// n+12 24 printf("14 - 15\n"); int now = n+13; for(i = 16; i <= n; i++,now++) printf("%d * %d\n",i,now); printf("%d + %d\n",n+12,now); } } return 0; }