蓝桥青少年组——计算24 2020-11-25

简介: 蓝桥青少年组——计算24 2020-11-25

蓝桥青少年组——计算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

1. //暴力枚举所有的可能性
2. #include <stdio.h>
3. int a,b,c,d,f1,f2,f3,tmp;
4. int main(int argc, char *argv[])
5. {
6.  int tj=0;
7.  scanf("%d %d %d %d",&a,&b,&c,&d);
8.  for(f1=1;f1<=3;f1++)
9.    for(f2=1;f2<=3;f2++)
10.       for(f3=1;f3<=3;f3++){
11.         if(f1==3&&f2==3&&f3==3) tmp=a*b*c*d;
12.         else if(f1==3&&f2==3&&f3!=3){
13.           tmp=a*b*c;
14.           if(f3==1)tmp+=d;
15.           else tmp-=d;
16.         }
17.         else if(f1!=3&&f2==3&&f3==3){
18.           tmp=b*c*d;
19.           if(f1==1)tmp=a+tmp;
20.           else tmp=a-tmp;
21.         }
22.         else if(f1==3&&f2!=3&&f3==3){
23.           if(f2==1)tmp=a*b+c*d;
24.           else tmp=a*b-c*d;
25.         }
26.         else if(f1==3&&f2!=3&&f3!=3){
27.           tmp=a*b;
28.           if(f2==1)tmp+=c;
29.           else tmp-=c;
30.           if(f3==1)tmp+=d;
31.           else tmp-=d;
32.         }
33.         else if(f1!=3&&f2==3&&f3!=3){
34.           tmp=b*c;
35.           if(f1==1)tmp=a+tmp;
36.           else tmp=a-tmp;
37.           if(f3==1)tmp+=d;
38.           else tmp-=d;
39.         }
40.         else if(f1!=3&&f2!=3&&f3==3){
41.           if(f1==1)tmp=a+b;
42.           else tmp=a-b;
43.           if(f2==1)tmp+=c*d;
44.           else tmp-=c*d;
45.         }
46.         else{
47.           if(f1==1)tmp=a+b;
48.           else tmp=a-b;
49.           if(f2==1)tmp+=c;
50.           else tmp-=c;
51.           if(f3==1)tmp+=d;
52.           else tmp-=d;
53.         }
54.         if(tmp==24)tj++;
55.       }
56.       printf("%d\n",tj);
57.   return 0;
58. }

 

相关文章
|
SQL 缓存 NoSQL
接口的幂等性设计和防重保证,详细分析幂等性的几种实现方法
本篇文章详细说明了幂等性,解释了什么是幂等性,幂等性的使用场景,讨论了幂等和防重的概念。分析了幂等性的情况以及如何设计幂等性服务。阐述了幂等性实现防重的几种策略,包括乐关锁,防重表,分布式锁,token令牌以及支付缓冲区。
9542 0
接口的幂等性设计和防重保证,详细分析幂等性的几种实现方法
|
SQL 消息中间件 Kafka
Flink+Paimon+Hologres,面向未来的一体化实时湖仓平台架构设计
本文介绍了阿里云实时数仓Hologres负责人姜伟华在Flink Forward Asia 2024上的分享,涵盖实时数仓的发展历程、从实时数仓到实时湖仓的演进,以及总结。文章通过三代实时数仓架构的演变,详细解析了Lambda架构、Kafka实时数仓分层+OLAP、Hologres实时数仓分层复用等方案,并探讨了未来从实时数仓到实时湖仓的演进方向。最后,结合实际案例和Demo展示了Hologres + Flink + Paimon在实时湖仓中的应用,帮助用户根据业务需求选择合适的方案。
1806 20
Flink+Paimon+Hologres,面向未来的一体化实时湖仓平台架构设计
|
JavaScript Java 开发者
Spring事务失效,常见的情况有哪些?
本文总结了Spring事务失效的7种常见情况,包括未启用事务管理功能、方法非public类型、数据源未配置事务管理器、自身调用问题、异常类型错误、异常被吞以及业务和事务代码不在同一线程中。同时提供了两种快速定位事务相关Bug的方法:通过查看日志(设置为debug模式)或调试代码(在TransactionInterceptor的invoke方法中设置断点)。文章帮助开发者更好地理解和解决Spring事务中的问题。
677 7
|
存储 网络协议 算法
【C语言】进制转换无难事:二进制、十进制、八进制与十六进制的全解析与实例
进制转换是计算机编程中常见的操作。在C语言中,了解如何在不同进制之间转换数据对于处理和显示数据非常重要。本文将详细介绍如何在二进制、十进制、八进制和十六进制之间进行转换。
2564 5
|
存储 算法 C++
高精度算法(加、减、乘、除,使用c++实现)
高精度算法(加、减、乘、除,使用c++实现)
3732 0
高精度算法(加、减、乘、除,使用c++实现)
|
Java Apache Maven
Java将word文档转换成pdf文件的方法?
【10月更文挑战第13天】Java将word文档转换成pdf文件的方法?
5434 1
|
算法 安全
死锁相关知识点以及银行家算法(解题详细步骤)
死锁相关知识点以及银行家算法(解题详细步骤)
780 2
|
开发框架 IDE 开发工具
QT基础教程(Hello QT)
QT基础教程(Hello QT)
382 1
|
机器学习/深度学习 存储 编解码
基于YOLOv8与ByteTrack的车辆检测追踪与流量计数系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标追踪、车辆检测追踪、过线计数、流量统计(2)
基于YOLOv8与ByteTrack的车辆检测追踪与流量计数系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标追踪、车辆检测追踪、过线计数、流量统计