赞
踩
蓝桥青少年组——计算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
- //暴力枚举所有的可能性
- #include <stdio.h>
- int a,b,c,d,f1,f2,f3,tmp;
- int main(int argc, char *argv[])
- {
- int tj=0;
- scanf("%d %d %d %d",&a,&b,&c,&d);
- for(f1=1;f1<=3;f1++)
- for(f2=1;f2<=3;f2++)
- for(f3=1;f3<=3;f3++){
- if(f1==3&&f2==3&&f3==3) tmp=a*b*c*d;
- else if(f1==3&&f2==3&&f3!=3){
- tmp=a*b*c;
- if(f3==1)tmp+=d;
- else tmp-=d;
- }
- else if(f1!=3&&f2==3&&f3==3){
- tmp=b*c*d;
- if(f1==1)tmp=a+tmp;
- else tmp=a-tmp;
- }
- else if(f1==3&&f2!=3&&f3==3){
- if(f2==1)tmp=a*b+c*d;
- else tmp=a*b-c*d;
- }
- else if(f1==3&&f2!=3&&f3!=3){
- tmp=a*b;
- if(f2==1)tmp+=c;
- else tmp-=c;
- if(f3==1)tmp+=d;
- else tmp-=d;
- }
- else if(f1!=3&&f2==3&&f3!=3){
- tmp=b*c;
- if(f1==1)tmp=a+tmp;
- else tmp=a-tmp;
- if(f3==1)tmp+=d;
- else tmp-=d;
- }
- else if(f1!=3&&f2!=3&&f3==3){
- if(f1==1)tmp=a+b;
- else tmp=a-b;
- if(f2==1)tmp+=c*d;
- else tmp-=c*d;
- }
- else{
- if(f1==1)tmp=a+b;
- else tmp=a-b;
- if(f2==1)tmp+=c;
- else tmp-=c;
- if(f3==1)tmp+=d;
- else tmp-=d;
- }
- if(tmp==24)tj++;
- }
- printf("%d\n",tj);
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。