测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

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分的基础上完成给出的最后一个样例

上一题 下一题