蓝桥杯:奇怪的分式(暴力枚举法)

1、问题描述

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

1/4 乘以 8/5

小明居然把分子拼接在一起,分母拼接在一起,答案是:18/45 (如下图所示)
蓝桥杯:奇怪的分式(暴力枚举法)_第1张图片

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

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

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

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

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

2、解法思想
  根据题意,总共有a、b、c、d四个数,我们可以使用暴力枚举法(4层for循环),列举出所有的情况,在判断是该种情况是否合理。

3、解法代码

#include
using namespace std;

int cnt=0;

void count()                    //暴力枚举; 
{
	for(int a=1;a<10;a++)                         
	{
		for(int b=1;b<10;b++)
		{
			for(int c=1;c<10;c++)
			{
				for(int d=1;d<10;d++)
				{
					if(a!=b&&c!=d)            //单个分式中的分子分母不能相等; 
					{
						if((a*10+c)*b*d==(b*10+d)*a*c)   //两个分式结果交叉相乘,避免了乘法; 
							cnt++;
					}
				}
			}
		}
	} 
}

int main()
{
	count();
	cout<<cnt++;
	return 0;
}

4、运行结果
  本题的结果应为 14
蓝桥杯:奇怪的分式(暴力枚举法)_第2张图片

运行环境:DEV c++

至此,整个题目解答完毕!!!

  结语:以上就是我对这个问题的理解、解法,可能存在着更好、更简洁的解法代码,希望大家提出来,我们一起讨论,交换看法,共同进步。若上述代码中存在问题,望大家指正,谢谢大家看到结尾。(∩^∩)

奋斗的2351

你可能感兴趣的:(蓝桥杯历年真题)