马虎的算式·~1/11

如题

小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了。
有一次,老师出的题目是:36 x 495 = ?
他却给抄成了:396 x 45 = ?
但结果却很戏剧性,他的答案竟然是对的!!
因为 36 * 495 = 396 * 45 = 17820
类似这样的巧合情况可能还有很多,比如:27 * 594 = 297 * 54

假设 a b c d e 代表1~9不同的5个数字(注意是各不相同的数字,且不含0)
能满足形如: ab * cde = adb * ce 这样的算式一共有多少种呢?
请你利用计算机的优势寻找所有的可能,并回答不同算式的种类数。
满足乘法交换律的算式计为不同的种类,所以答案肯定是个偶数。

先提取题目所给消息:
1.5个在1~9之间的不同数字。abcde
2.abcde=adbce。(这里可以看出,d就是中间塞着的一个数字)
3.答案是偶数

直接考虑穷举法

代码如下:

#include <stdio.h>
int main()
{
    
    
	int a,b,c,d,e;//先定义五个数,这五个数都是1~9的
	int i,j,k;//备用
	//这个题可以用穷举法来计算
	k = 0;
	for(a=1;a<=9;a++)//a是属于1~9的数
	{
    
    
		for(b=1;b<=9;b++)
		{
    
    
			if(a!=b)//a不等于b才有接下来的故事
			{
    
    
				for(c=1;c<=9;c++)
				{
    
    
					if(c!=a&&c!=b)//c及既不等于a,也不等于b
					{
    
    
						for(d=1;d<=9;d++)
						{
    
    
							if(d!=a&&d!=b&&d!=c)//以下与上面雷同(doge 
							{
    
    
								for(e=1;e<=9;e++)
								{
    
    
									if(e!=a&&e!=b&&e!=c&&e!=d)
									{
    
    
										i = (a*10+b)*(c*100+d*10+e);//这就是题目上的关键点了,
										j = (a*100+d*10+b)*(c*10+e);//可以看做是d就是在中间变动的个数字
										if(i==j)//如果i==j的话,那么统计的数字就会多一个 
										{
    
    
											k++;
										}
									}
								}
							}
						}
					 } 
				}
			 } 
		}
	 }
	 printf("%d",k);//最后把统计的数字返回,打出就可以了 
	
}

运行截图如下:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/FG_future/article/details/112466050
今日推荐