知识的价值不在于占有,而在于使用。这篇文章主要讲述算法题每日一练---第32天:奇怪的分式相关的知识,希望能为你提供帮助。
一、问题描述上小学的时候,小明经常自己发明新算法。一次,老师出的题目是:1/4乘以8/5
小明居然把分子拼接在一起,分母拼接在一起,答案是:(参见下图)
文章图片
老师刚想批评他,转念一想,这个答案凑巧也对啊,真是见鬼!
对于分子、分母都是 1 ~ 9 中的一位数的情况,还有哪些算式可以这样计算呢?
请写出所有不同算式的个数(包括题中举例的)。
显然,交换分子分母后,例如:4/1乘以5/8 是满足要求的,这算做不同的算式。
但对于分子分母相同的情况, 这样的类型太多了,不在计数之列!
二、题目要求 考察
- 逻辑思维,数学思想
- 建议用时10~15min
- 最大运行时间:1s
- 最大运行内存: 128M
文章图片
首先,四重for循环范围分别从1到9,分别代表第一个、第二个分数的分子、分母,让普通的两个分数相乘之后的结果等于两个分数分子分母彼此相连接的结果相等就行。
四重循环只需判断6000多次,0.1s出结果,暴力法yyds。
【算法题每日一练---第32天(奇怪的分式)】注意
分子、分母相同的条件不算在内
四、编码实现```c++
#include< iostream>
using namespace std;
int main()
long long int i,j,k,p,ans=0; //初始化条件
double a,b; //定义两个分数的值
for(i=1; i< =9; i++)//第一层循环
for(j=1; j< =9; j++)//第二层循环
for(k=1; k< =9; k++)//第三层循环
for(p=1; p< =9; p++)//第四层循环
a=1.0(ik)/(jp); //第一个分数的结果,小数表示
b=1.0(10i+k)/(10j+p); //第二个分数的结果,小数表示
if(a==b& & j!=i& & k!=p)//满足条件
ans++; //计数++
cout< < ans; //输出结果
return 0;
## 五、输出结果
输出结果为:14![2.png](https://s4.51cto.com/images/blog/202204/25081314_6265e79ad5e0027847.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
推荐阅读
- 5Tomcat网站搭建
- 使用 Veth Pair 虚拟网卡对不同的网络空间进行通信
- mysqldump搭建主从的注意事项
- ELT.ZIPOpenHarmony啃论文俱乐部——这些小风景你不应该错过
- 华为云大咖带你玩转云原生基础设施之K8s
- 没有人比我更懂云原生!
- kettle庖丁解牛第20篇之JSON输出
- G010-OS-WIN-11-01 Windows 11 系统安装
- Linux基础(走进DNS,)