A50850. 计算24
填空题
困难
知识点
题目描述
计算24
题目描述
“计算24"是一个流传已久的数字游戏,小蓝最近对此痴迷不已。
游戏规則是:对4个1-10之间的自然数,进行加、减、乘三种运算,要求运算結果等于24。乘法的优先级高于加、减,并且算式中不可以用括号,不可以改变4个数字出现的顺序。
下面我们给出两个游戏的具体例子:
若给出的4个操作数是:10、2、4、8,则有两种可能的解答方案:
10+2+4+8=24,10*2-4+8=24,输出内容:2
若给出的4个操作數是:7、2、3.6,则没有解答案,输出内容:0。
輸入:四个整数。
输出:输出方案总数
样例输入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;
}答案解析
评分标准:
30分:完成题目样例和给出的一个样例
50分:在30分的基础上完成给出的另外一个样例
100分:在50分的基础上完成给出的最后一个样例
上一题
下一题