奇怪的方式:c++求解奇怪的方式

探讨一种奇特的数学现象,当两个分数相乘时,如果将分子和分母简单地拼接在一起,竟然能得出正确的结果。文章通过编程方式,找出所有满足这种奇特计算方式的算式数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.问题的重述

标题:奇怪的分式

上小学的时候,小明经常自己发明新算法。一次,老师出的题目是:

1/4 乘以 8/5

小明居然把分子拼接在一起,分母拼接在一起,答案是:18/45 (参见图1.png)

老师刚想批评他,转念一想,这个答案凑巧也对啊,真是见鬼!

对于分子、分母都是 1~9 中的一位数的情况,还有哪些算式可以这样计算呢?

请写出所有不同算式的个数(包括题中举例的)。

显然,交换分子分母后,例如:4/1 乘以 5/8 是满足要求的,这算做不同的算式。

但对于分子分母相同的情况,2/2 乘以 3/3 这样的类型太多了,不在计数之列!

注意:答案是个整数(考虑对称性,肯定是偶数)。请通过浏览器提交。不要书写多余的内容。

2.问题的分析

   根据问题的描述可恶意得知:假设有a,b,c,d四个数,(a,b,c,d)的取值范围都是在{1,2,3,4,5,6,7,8,9}中,并且分子不能等于分母,假设s=a/b;s1=c/d;那么我们可以得到以下关系式:

                                                     s*s1=\frac{ac}{bd}; \frac{1}{s*s1}=\frac{bd}{ac}; a!=b; c!=d;

3.思路 

        通过循环遍历这四个数a,b,c,d;然后通过上述问题的分析所得的关系式来判断即可求解。

           注意:在循环遍历时已经包括了上述的的第二个条件,即   \frac{1}{s*s1}=\frac{bd}{ac} ,所以不需要再继续判断。

源代码如下:

#include "stdafx.h"
#include<iostream>
using namespace std;

int fun()
{
	int count = 0;
	for(int a=1;a<=9;a++)
		for (int b = 1; b <= 9; b++)
			for (int c = 1; c <= 9; c++)
				for (int d = 1; d <= 9; d++)
				{
					if (a == b&&c == d)continue;
						int s = (a * 10 + c);
						int s1 =(b * 10 + d);
						if ((a*1.0 / b)*(c*1.0) / d == (s*1.0 / s1*1.0))count++;
				}
	cout << count << endl; 
		return 0;
}
int main()
{
	fun();
    return 0;
}

最后的结果为:14

如下图: 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值