蓝桥青少年组——计算24
【编程实现】
“计算24"是一个流传已久的数字游戏,小蓝最近对此痴迷不已。
游戏规则是:对4个1~10之间的自然数,进行加、减、乘三种运算,要求运算结果等于24。
乘法的优先级高于加、减,并且算式中不可以用括号,不可以改变4个数字出现的顺序。
下面我们给出两个游戏的具体例子:
若给出的4个操作数是:10、2、4、8,则有两种可能的解答方案10+2+4+8=24,10*2-4+8=24。若给出的4个操作数是:7,2、3、6,则没有解答方案。
请你输出解答方案数。
输入:四个整数
输出:输出方案总数
【评判标准】
30分:完成题目样例和给出的一个样例
40分:在30分的基础上完成给出的第三个样例;
50分:在40分的基础上完成给出的第四个样例。
样例输入1:
7 2 3 6
样例输出1:
0
样例输入2:
10 2 4 8
样例輸出2:
2
1. //暴力枚举所有的可能性 2. #include <stdio.h> 3. int a,b,c,d,f1,f2,f3,tmp; 4. int main(int argc, char *argv[]) 5. { 6. int tj=0; 7. scanf("%d %d %d %d",&a,&b,&c,&d); 8. for(f1=1;f1<=3;f1++) 9. for(f2=1;f2<=3;f2++) 10. for(f3=1;f3<=3;f3++){ 11. if(f1==3&&f2==3&&f3==3) tmp=a*b*c*d; 12. else if(f1==3&&f2==3&&f3!=3){ 13. tmp=a*b*c; 14. if(f3==1)tmp+=d; 15. else tmp-=d; 16. } 17. else if(f1!=3&&f2==3&&f3==3){ 18. tmp=b*c*d; 19. if(f1==1)tmp=a+tmp; 20. else tmp=a-tmp; 21. } 22. else if(f1==3&&f2!=3&&f3==3){ 23. if(f2==1)tmp=a*b+c*d; 24. else tmp=a*b-c*d; 25. } 26. else if(f1==3&&f2!=3&&f3!=3){ 27. tmp=a*b; 28. if(f2==1)tmp+=c; 29. else tmp-=c; 30. if(f3==1)tmp+=d; 31. else tmp-=d; 32. } 33. else if(f1!=3&&f2==3&&f3!=3){ 34. tmp=b*c; 35. if(f1==1)tmp=a+tmp; 36. else tmp=a-tmp; 37. if(f3==1)tmp+=d; 38. else tmp-=d; 39. } 40. else if(f1!=3&&f2!=3&&f3==3){ 41. if(f1==1)tmp=a+b; 42. else tmp=a-b; 43. if(f2==1)tmp+=c*d; 44. else tmp-=c*d; 45. } 46. else{ 47. if(f1==1)tmp=a+b; 48. else tmp=a-b; 49. if(f2==1)tmp+=c; 50. else tmp-=c; 51. if(f3==1)tmp+=d; 52. else tmp-=d; 53. } 54. if(tmp==24)tj++; 55. } 56. printf("%d\n",tj); 57. return 0; 58. }