OpenJudge

简介: 2787:算24 查看 提交 统计 提问 时间限制:3000ms内存限制:65536kB描述给出4个小于10个正整数,你可以使用加减乘除4种运算以及括号把这4个数连接起来得到一个表达式。

2787:算24

时间限制:
3000ms
内存限制:
65536kB
描述
给出4个小于10个正整数,你可以使用加减乘除4种运算以及括号把这4个数连接起来得到一个表达式。现在的问题是,是否存在一种方式使得得到的表达式的结果等于24。

这里加减乘除以及括号的运算结果和运算的优先级跟我们平常的定义一致(这里的除法定义是实数除法)。

比如,对于5,5,5,1,我们知道5 * (5 – 1 / 5) = 24,因此可以得到24。又比如,对于1,1,4,2,我们怎么都不能得到24。
输入
输入数据包括多行,每行给出一组测试数据,包括4个小于10个正整数。最后一组测试数据中包括4个0,表示输入的结束,这组数据不用处理。
输出
对于每一组测试数据,输出一行,如果可以得到24,输出“YES”;否则,输出“NO”。
样例输入
5 5 5 1
1 1 4 2
0 0 0 0
样例输出
YES
NO

 1 #include <iostream>
 2 #include <cstring>
 3 #include <cmath>
 4 using namespace std;
 5 const double x = 1e-6;
 6 
 7 double a[5];
 8 
 9 bool dfs(int step)
10 {
11     int i,j,k,t;
12     if(step == 1)
13     {
14         if(fabs(a[0]-24)< x)
15             return 1;
16         else
17             return 0;
18     }
19     else
20     {
21         double m,n;
22         for(i=0;i<step;i++)
23             for(j=i+1;j<step;j++)
24             {
25                 m = a[i],n = a[j];
26                 a[j] = a[step - 1]; 
27                 for(k=1;k<=6;k++)
28                 {
29                    // m = a[i],n = a[j];
30                    // a[j] = a[step - 1]; 
31                     switch (k)
32                     {
33                         case 1:a[i] = m+n;
34                         if(dfs(step-1)) return 1;
35                         break;
36                         case 2:a[i] = m-n;
37                         if(dfs(step-1)) return 1;
38                         break;
39                         case 3:a[i] = n-m;
40                         if(dfs(step-1)) return 1;
41                         break;
42                         case 4:a[i] = m*n;
43                         if(dfs(step-1)) return 1;
44                         break;
45                         case 5:
46                             if(fabs(n)>=x)
47                             {   
48                                 a[i] = m/n;
49                                 if(dfs(step-1)) return 1;
50                                 break;
51                             }
52                         case 6:
53                             if(fabs(m)>=x)
54                             {   
55                                 a[i] = n/m;
56                                 if(dfs(step-1)) return 1;
57                                 break;
58                             }
59                     }
60                 }
61                 a[i] = m,a[j] = n;
62             }
63         }
64         return 0;//忘啦 
65 }
66             
67 int main()
68 {
69     int i,j,k,t;
70     while(1)
71     {
72         memset(a,0,sizeof(a));
73         double sum = 0;
74         for(i=0;i<4;i++)
75         {
76             cin>>a[i];
77             sum += a[i];
78         }
79         bool flag ;
80         if(0==sum)
81             break;
82         else 
83             flag = dfs(4);
84         if(flag)
85             cout<<"YES"<<endl;
86         else
87             cout<<"NO"<<endl;
88     }
89     return 0;
90 }

 

目录
相关文章
|
存储 算法 NoSQL
TinyKv介绍
TinyKv介绍
504 1
|
机器学习/深度学习 并行计算 Shell
docker 获取Nvidia 镜像 | cuda |cudnn
本文分享如何使用docker获取Nvidia 镜像,包括cuda10、cuda11等不同版本,cudnn7、cudnn8等,快速搭建深度学习环境。
6865 0
|
机器学习/深度学习 人工智能 自然语言处理
全新开源通义千问Qwen3上架阿里云百炼
Qwen3是Qwen系列大型语言模型的最新成员,作为混合推理模型,其旗舰版本Qwen3-235B-A22B在代码、数学和通用能力测试中表现出色,与顶级模型DeepSeek-R1、o1、o3-mini等相比具有竞争力。小型MoE模型Qwen3-30B-A3B激活参数仅为QwQ-32B的10%,性能更优,甚至小规模模型Qwen3-4B也能匹敌Qwen2.5-72B-Instruct。Qwen3支持思考与非思考两种模式,可根据任务需求灵活调整推理深度,并支持119种语言,Qwen3在推理、工具调用及多语言处理等方面显著提升,目前已开源并在阿里云百炼平台上线,提供便捷体验。
1847 0
|
JavaScript Java Spring
@Async异步失效的9种场景
在Spring中,启用@Async异步功能需要在启动类或配置类上使用`@EnableAsync`。若未使用此注解,@Async将无效。另外,内部方法调用(如在一个类的方法中调用另一个被@Async注解的方法)会导致异步功能失效,因为这不涉及Spring的AOP代理。此外,@Async方法必须是public,返回类型为void或Future,不能是static或final,且其所在的类需被@Service等注解以使Spring管理。如果使用@ComponentScan,确保正确扫描包含@Async类的包路径。
303 1
|
9月前
|
网络协议 Ubuntu Linux
解决ssh: connect to host IP port 22: Connection timed out报错(scp传文件指定端口)
解决 `ssh: connect to host IP port 22: Connection timed out` 报错涉及检查 SSH 服务状态、防火墙配置、网络连通性和主机名解析等多个方面。通过逐步排查上述问题,并在 `scp` 命令中正确指定端口,可以有效解决连接超时的问题,确保文件传输的顺利进行。希望本文提供的解决方案能帮助您快速定位并解决该错误。
2117 3
|
机器学习/深度学习
【机器学习】如何判断函数凸或非凸?(面试回答)
文章介绍了如何判断函数是凸函数还是非凸函数,包括凸函数的定义、几何意义、判定方法(一元函数通过二阶导数判断,多元函数通过Hessian矩阵的正定性判断),以及凸优化的概念和一些经典的凸优化问题。
837 1
【机器学习】如何判断函数凸或非凸?(面试回答)
|
12月前
下载网易云音乐(我喜欢的歌曲)
下载网易云音乐(我喜欢的歌曲)
|
存储 芯片 内存技术
计算机组成原理常见面试题目总结,含答案
计算机组成原理常见面试题目总结,含答案
|
JSON 开发框架 .NET
ASP.NET Core Web API设置响应输出的Json数据格式的两种方式
ASP.NET Core Web API设置响应输出的Json数据格式的两种方式
315 0
|
机器学习/深度学习 人工智能 自然语言处理
【大模型】大语言模型前沿技术系列讲座-学习笔记1:人工智能发展史
【大模型】大语言模型前沿技术系列讲座-学习笔记1:人工智能发展史