快算24
Time Limit: 1000MS   Memory Limit: 65536K
Total Submissions: 4791   Accepted: 2930

Description

给定4个不大于10的正整数(范围1-10),要求在不改变数据先后顺序的情况下,采用加减乘除四种运算,找到一个表达式,使得最后的结果是24。

Input

4个不大于10的正整数。输入数据保证存在唯一解。

Output

不改变位置顺序,由'+','-','*','/'4个运算符和'(',')'组成的表达式

Sample Input

5 5 1 5

Sample Output

5*(5-(1/5))

三年前,大一的时候用C语言写的。一晃三年已过,我却没做多少题。没记错的话,当时暴力的时候,写的这叫一个累。后来在discuss中看到,这道题的测试用例只有给出的那一个,所以只需输出5*(5-(1/5))即可。。。。。。

反正暴力的话就一定要写下去。

也还可以暴力+ - * /,一共就三个位置。之后就是暴力括号的事情。

代码:

#include<stdio.h>
#include<stdlib.h>
main ()
{
int a,b,c,d,e,f,g,h,i,j,k,l;
double m,n;
while(scanf("%d %d %d %d",&a,&b,&c,&d)==4){
e=a+b;
f=c+d;
g=a-b;
h=c-d;
i=a*b;
j=c*d;
m=(double)a/b;
n=(double)c/d;
if(e+f==24)
printf("%d+%d+%d+%d\n",a,b,c,d);
if(e*f==24)
printf("(%d+%d)*(%d+%d)\n",a,b,c,d);
if(e+h==24)
printf("%d+%d+%d-%d\n",a,b,c,d);
if(e-h==24)
printf("%d+%d-%d+%d\n",a,b,c,d);
if(e*h==24)
printf("(%d+%d)*(%d-%d)\n",a,b,c,d);
if(g+f==24)
printf("%d-%d+%d+%d\n",a,b,c,d);
if(g*f==24)
printf("(%d-%d)*(%d+%d)\n",a,b,c,d);
if(g*h==24)
printf("(%d-%d)*(%d-%d)\n",a,b,c,d);
if(i+f==24)
printf("%d*%d+%d+%d\n",a,b,c,d);
if(i-f==24)
printf("%d*%d-%d-%d\n",a,b,c,d);
if(i*f==24)
printf("%d*%d*(%d+%d)\n",a,b,c,d);
if(f!=0&&i/f==24)
printf("%d*%d/(%d+%d)\n",a,b,c,d);
if(i+h==24)
printf("%d*%d+%d-%d\n",a,b,c,d);
if(i-h==24)
printf("%d*%d-%d+%d\n",a,b,c,d);
if(i*h==24)
printf("%d*%d*(%d-%d)\n",a,b,c,d);
if(h!=0&&i/h==24)
printf("%d*%d/(%d-%d)\n",a,b,c,d);
if(e+j==24)
printf("%d+%d+%d*%d\n",a,b,c,d);
if(e*j==24)
printf("(%d+%d)*%d*%d\n",a,b,c,d);
if(g+j==24)
printf("%d-%d+%d*%d\n",a,b,c,d);
if(g*j==24)
printf("(%d-%d)*%d*%d\n",a,b,c,d);
if(i+j==24)
printf("%d*%d+%d*%d\n",a,b,c,d);
if(i-j==24)
printf("%d*%d-%d*%d\n",a,b,c,d);
if(i*j==24)
printf("%d*%d*%d*%d\n",a,b,c,d);
if(j!=0&&i/j==24)
printf("%d*%d/(%d*%d)\n",a,b,c,d);
if(e+n==24)
printf("%d+%d+(%d/%d)\n",a,b,c,d);
if(d!=0&&(double)(e*c)/d==24)
printf("(%d+%d)*%d/%d\n",a,b,c,d);
if(c!=0&&(double)(e*d)/c==24)
printf("(%d+%d)/(%d/%d)\n",a,b,c,d);
if(d!=0&&(double)(g*c)/d==24)
printf("(%d-%d)*%d/%d\n",a,b,c,d);
if(c!=0&&(double)(g*d)/c==24)
printf("(%d-%d)/(%d/%d)\n",a,b,c,d);
if(i+n==24)
printf("%d*%d+%d/%d\n",a,b,c,d);
if(i-n==24)
printf("%d*%d-%d/%d\n",a,b,c,d);
if(d!=0&&(double)(i*c)/d==24)
printf("%d*%d*%d/%d\n",a,b,c,d);
if(c!=0&&(double)(i*d)/c==24)
printf("%d*%d/(%d/%d)\n",a,b,c,d);
if(m+f==24)
printf("%d/%d+%d+%d\n",a,b,c,d);
if(b!=0&&(double)(a*f)/b==24)
printf("%d/%d*(%d+%d)\n",a,b,c,d);
if(b!=0&&(double)(a*h)/b==24)
printf("%d/%d*(%d-%d)\n",a,b,c,d);
if(m+j==24)
printf("%d/%d+%d*%d\n",a,b,c,d);
if(b!=0&&(double)(a*j)/b==24)
printf("%d/%d*%d*%d\n",a,b,c,d);
if(a*c/(b*d)==24)
printf("%d/%d*%d/%d\n",a,b,c,d);
if(a*(b+c+d)==24)
printf("%d*(%d+%d+%d)\n",a,b,c,d);
if(a*(b+c-d)==24)
printf("%d*(%d+%d-%d)\n",a,b,c,d);
if(a+((b+c)*d)==24)
printf("%d+(%d+%d)*%d\n",a,b,c,d);
if(a*d*(b+c)==24)
printf("%d*(%d+%d)*%d\n",a,b,c,d);
if(a+(double)(b+c)/d==24)
printf("%d+(%d+%d)/%d\n",a,b,c,d);
if((double)(a*(b+c))/d==24)
printf("%d*(%d+%d)/%d\n",a,b,c,d);
if((double)(a*d)/(b+c)==24)
printf("%d/((%d+%d)/%d)\n",a,b,c,d);
if(a*(b-c+d)==24)
printf("%d*(%d-%d+%d)\n",a,b,c,d);
if(a*(b-c-d)==24)
printf("%d*(%d-%d-%d)\n",a,b,c,d);
if(a+(b-c)*d==24)
printf("%d+(%d-%d)*%d\n",a,b,c,d);
if(a-(b-c)*d==24)
printf("%d-(%d-%d)*%d\n",a,b,c,d);
if(a*(b-c)*d==24)
printf("%d*(%d-%d)*%d\n",a,b,c,d);
if((double)(a*(b-c))/d==24)
printf("%d*(%d-%d)/%d\n",a,b,c,d);
if((double)(a*d)/(b-c)==24)
printf("%d/((%d-%d)/%d)\n",a,b,c,d);
if(a+(b*c)+d==24)
printf("%d+%d*%d+%d\n",a,b,c,d);
if(a*(b*c+d)==24)
printf("%d*(%d*%d+%d)\n",a,b,c,d);
if(a+b*c-d==24)
printf("%d+%d*%d-%d\n",a,b,c,d);
if(a*(b*c-d)==24)
printf("%d*(%d*%d-%d)\n",a,b,c,d);
if(a+b*c*d==24)
printf("%d+%d*%d*%d\n",a,b,c,d);
if(a+(double)(b*c)/d==24)
printf("%d+%d*%d/%d\n",a,b,c,d);
if((double)(a*d)/(b*c)==24)
printf("%d/(%d*%d/%d)\n",a,b,c,d);
if((double)(b)/c+a+d==24)
printf("%d+%d/%d+%d\n",a,b,c,d);
if(a*d+(double)(a*b)/c==24)
printf("%d*((%d/%d)+%d)\n",a,b,c,d);
if((double)(a*b)/c-a*d==24)
printf("%d*((%d/%d)-%d)\n",a,b,c,d);
if((double)(a*c)/(b-c*d)==24)
printf("%d/((%d/%d)-%d)\n",a,b,c,d);
if(a+(double)(b*d)/c==24)
printf("%d+%d/%d*%d\n",a,b,c,d);
if((double)(a*b*d)/c==24)
printf("%d*%d/%d*%d\n",a,b,c,d);
if((double)(a*c)/(b*d)==24)
printf("%d/(%d/%d*%d)\n",a,b,c,d);
if(((double)(a*b)/c)/d==24)
printf("%d*%d/%d/%d\n",a,b,c,d);
if((double)(a*c*d)/b==24)
printf("%d/(%d/%d/%d)\n",a,b,c,d);
if(a+b*(c+d)==24)
printf("%d+%d*(%d+%d)\n",a,b,c,d);
if((double)(a*(c+d))/b==24)
printf("%d/(%d/(%d+%d))\n",a,b,c,d);
if(a+b*(c-d)==24)
printf("%d+%d*(%d-%d)\n",a,b,c,d);
if(a-b*(c-d)==24)
printf("%d-%d*(%d-%d)\n",a,b,c,d);
if(a-b/(double)(c-d)==24)
printf("%d-%d/(%d-%d)\n",a,b,c,d);
if((double)(a*(c-d))/b==24)
printf("%d/(%d/(%d-%d))\n",a,b,c,d);
if(a*(b+(c*d))==24)
printf("%d*(%d+%d*%d)\n",a,b,c,d);
if(a*(b-c*d)==24)
printf("%d*(%d-%d*%d)\n",a,b,c,d);
if((double)(a*c*d)/b==24)
printf("%d/(%d/(%d*%d))\n",a,b,c,d);
if(a*b+(double)(a*c)/d==24)
printf("%d*(%d+%d/%d)\n",a,b,c,d);
if(a*b-(double)(a*c)/d==24)
printf("%d*(%d-(%d/%d))\n",a,b,c,d);
if((double)(a*d)/(b*d-c)==24)
printf("%d/(%d-(%d/%d))\n",a,b,c,d);
if(a+(double)(b*d)/c==24)
printf("%d+(%d/(%d/%d))\n",a,b,c,d);
if((double)(a*c)/(b*d)==24)
printf("%d/(%d/(%d/%d))\n",a,b,c,d);
if((a+b+c)*d==24)
printf("(%d+%d+%d)*%d\n",a,b,c,d);
if((double)(a+b+c)/d==24)
printf("(%d+%d+%d)/%d\n",a,b,c,d);
if((a+b-c)*d==24)
printf("(%d+%d-%d)*%d\n",a,b,c,d);
if((double)(a+b-c)/d==24)
printf("(%d+%d-%d)/%d\n",a,b,c,d);
if((a+b)*c+d==24)
printf("(%d+%d)*%d+%d\n",a,b,c,d);
if((a+b)*c-d==24)
printf("(%d+%d)*%d-%d\n",a,b,c,d);
if((double)(a+b)/c+d==24)
printf("(%d+%d)/%d+%d\n",a,b,c,d);
if((double)(a+b)/c-d==24)
printf("(%d+%d)/%d-%d\n",a,b,c,d);
if(((a+b)*d)/(double)(c)==24)
printf("(%d+%d)/%d*%d\n",a,b,c,d);
if((a-b+c)*d==24)
printf("(%d-%d+%d)*%d\n",a,b,c,d);
if((a-b-c)*d==24)
printf("(%d-%d-%d)*%d\n",a,b,c,d);
if((a-b)*c+d==24)
printf("(%d-%d)*%d+%d\n",a,b,c,d);
if((a-b)*c-d==24)
printf("(%d-%d)*%d-%d\n",a,b,c,d);
if((a*b+c)*d==24)
printf("(%d*%d+%d)*%d\n",a,b,c,d);
if((double)(a*b+c)/d==24)
printf("(%d*%d+%d)/%d\n",a,b,c,d);
if((a*b-c)*d==24)
printf("(%d*%d-%d)*%d\n",a,b,c,d);
if((double)(a*b-c)/d==24)
printf("(%d*%d-%d)/%d\n",a,b,c,d);
if(a*b*c+d==24)
printf("%d*%d*%d+%d\n",a,b,c,d);
if(a*b*c-d==24)
printf("%d*%d*%d-%d\n",a,b,c,d);
if((double)(a*b)/c+d==24)
printf("%d*%d/%d+%d\n",a,b,c,d);
if((double)(a*b)/c-d==24)
printf("%d*%d/%d-%d\n",a,b,c,d);
if(c*d+a*d/(double)(b)==24)
printf("((%d/%d)+%d)*%d\n",a,b,c,d);
if((a+b*c)/(double)(b*d)==24)
printf("((%d/%d)+%d)/%d\n",a,b,c,d);
if(a*d/(double)(b)-c*d==24)
printf("((%d/%d)-%d)*%d\n",a,b,c,d);
if((a-b*c)/(double)(b*d)==24)
printf("((%d/%d)-%d)/%d\n",a,b,c,d);
if((double)(a*c)/b+d==24)
printf("%d/%d*%d+%d\n",a,b,c,d);
if((double)(a*c)/b-d==24)
printf("%d/%d*%d-%d\n",a,b,c,d);
if((double)(a*d)/(b*c)==24)
printf("%d/%d/%d*%d\n",a,b,c,d);
if(a*(b+c)+d==24)
printf("%d*(%d+%d)+%d\n",a,b,c,d);
if(a*(b+c)-d==24)
printf("%d*(%d+%d)-%d\n",a,b,c,d);
if((double)(a)/(b+c)*d==24)
printf("%d/(%d+%d)*%d\n",a,b,c,d);
if(a*(b-c)+d==24)
printf("%d*(%d-%d)+%d\n",a,b,c,d);
if(a*(b-c)-d==24)
printf("%d*(%d-%d)-%d\n",a,b,c,d);
if((a-b*c)*d==24)
printf("(%d-%d*%d)*%d\n",a,b,c,d);
if((double)(a*d)/(b*c)==24)
printf("%d/(%d*%d)*%d\n",a,b,c,d);
if((double)(a*c)/b+d==24)
printf("%d/(%d/%d)+%d\n",a,b,c,d);
if((double)(a*c)/b-d==24)
printf("%d/(%d/%d)-%d\n",a,b,c,d);
if((double)(a*c*d)/b==24)
printf("%d/(%d/%d)*%d\n",a,b,c,d);
if((double)(a*c)/(b*d)==24)
printf("%d/(%d/%d)/%d\n",a,b,c,d);
}
return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

POJ 3983:快算24的更多相关文章

  1. 【Nodejs】“快算24”扑克牌游戏算法 1.02

    快算24是一种挺好的锻炼孩子算数能力的扑克牌游戏,它的游戏方式是把四张牌的牌面数值通过有限四则运算得到结果24,四张牌必须仅用一次.各地玩法还有点差别,有的只算1-10,其它抽出来:有的地方把整幅牌都 ...

  2. 【Nodejs】“快算24”扑克牌游戏算法

    算24是一款扑克牌游戏,它的游戏方式是把四张牌的牌面数值通过四则运算得到结果24,四张牌必须仅用一次.这是一种挺好的锻炼孩子算数能力的扑克牌游戏. 各地玩法还有点差别,有的只算1-10,其它抽出来:有 ...

  3. 【Nodejs】“快算24”扑克牌游戏算法 1.01

    考虑到1.00版本需要改源码变更四个数字,这版修改了一下变成控制台输入了. 先把两个数四则运算得到结果想清楚就是C2代码,三个数就是C3,四个数就是C4.简单的代码简单,却是复杂的基础:复杂的脱胎于简 ...

  4. 快算24点,POJ(3983)

    题目链接:http://poj.org/problem?id=3983 中文题,就不解释题意了. 类似之前的一篇博客,这里也不上解释了,直接上代码吧. #include <iostream> ...

  5. POJ3983 快算24

    很正常的题目,迷一样的答案. 测试数据只有一组,对没错只有一组. #include<cstdio> int main() { printf("5*(5-(1/5))\n" ...

  6. hdu 1427 速算24点

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1427 速算24点 Description 速算24点相信绝大多数人都玩过.就是随机给你四张牌,包括A( ...

  7. 24点游戏&&速算24点(dfs)

    24点游戏 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit Sta ...

  8. hdu1427之速算24点

    速算24点 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  9. python实现算24的算法

    1.介绍 给定4个整数,数字范围在1-13之间,任意使用 + - * / ( ) ,构造出一个表达式,使得最终结果为24,这就是常见的算24的游戏.本文介绍用Python语言实现的两种方式.2.实现思 ...

随机推荐

  1. postInvalidate 解决View.GONE,没有刷新的问题

    问题描述:布局: <ScrollView id="scroll"> <LinearLayout id="container"> < ...

  2. Java日期时间API系列11-----Jdk8中java.time包中的新的日期时间API类,使用java8日期时间API重写农历LunarDate

    通过Java日期时间API系列7-----Jdk8中java.time包中的新的日期时间API类的优点,java8具有很多优点,现在网上查到的农历转换工具类都是基于jdk7及以前的类写的,下面使用ja ...

  3. iis下发布MVC网站

    1.首先检查有没有安装iis,没有的话先安装iis 2. 3.选择应用程序池的时候看有没有asp.net 4.0 如果没有先安装. 首先以管理员身份打开“运行”输入cd C:\Windows\Micr ...

  4. 搜索控制器UISearchController的使用

    说明:本文主要是将系统UISearchController控件声明文件中的属性.方法.代理等介绍下,后续再联合[搜索栏UISearchBar]这篇文章一起更新更实用的信息. 1.初始化 // 如果设置 ...

  5. [多校联考]SLON!!!

    题目描述 $SLON$是一个调皮的学生,为了让他静下心来,老师给他出了一道数学题:给定表达式$A$,$A$中含有变量$x$和$+,-,*,(,)$这些符号,括号成对出现,一个算术运算符均对应两个操作数 ...

  6. JuJu Beta Postmortem

    JuJu demo demo 项目github地址 JuJu   设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 完成基于Julia语言的NER mod ...

  7. ionic3记录之栅格布局使文字居中

    { display:flex; align-items:center; } 未完待续...

  8. android使用友盟实现第三方登录、分享以及微信回调无反应问题解决办法

    这里介绍微信和新浪登录.微信登录和新浪登录都需要申请第三方账号.可以参考官方文档http://dev.umeng.com/social/android/operation#2还是很清晰的. 新浪微博开 ...

  9. BEC合约整数溢出漏洞还原与分析

    一.币圈一秒,人间一年 有道是币圈一日,人间一年.这个说法又得升级了,叫币圈一秒,人间一年. 前不久,币圈又出大事啦.BEC智能合约被爆出整数溢出漏洞,导致黑客能无限印币,在一次交易中,也就那么几秒钟 ...

  10. bzoj 4487: [Jsoi2015]染色问题

    先贴一个题解吧,最近懒得要死2333,可能是太弱的原因吧,总是扒题解,(甚至连题解都看不懂了),blog也没更新,GG http://blog.csdn.net/werkeytom_ftd/artic ...