蓝桥杯 __算式900

155 阅读2分钟

本文已参与[新人创作礼]活动,一起开启崛金创作之路

标题:

算式900 小明的作业本上有道思考题:

看下面的算式:

(□□□□-□□□□)*□□=900

其中的小方块代表09的数字,这10个方块刚好包含了09中的所有数字。 注意:0不能作为某个数字的首位。

小明经过几天的努力,终于做出了答案!如下: (5012-4987)*36=900

用计算机搜索后,发现还有另外一个解,本题的任务就是:请你算出这另外的一个解。

注意:提交的格式需要与示例严格一致; 括号及运算符号不要用中文输入法; 整个算式中不能包含空格。

注意:机器评卷,不要填写任何多余的内容,比如说明文字。

using namespace std;
 int a[11];  //用来判断他们的	
bool js(int i,int j, int k)  //找都满足 
{
 
	memset(a, 0, sizeof(a));   //吧所有数归零 
	
 
	int a1,a2;
	for(int m=0;m<4;m++)
	{
		 a1=i%10;
		 a2=j%10;
		 
		 if(a[a1]==0)
		 {
		  a[a1]=1; //赋值为已经用过的 
		 	 
			 if(a[a2]==0)  //判断是否为1 
			 {
			  a[a2]=1;	
			 }
			 else  return false;	
		  }
		  else  return false;  //不满足则返回false 
		  
		i=i/10;
		j=j/10;
	
	}
 
	for(int i=0;i<2;i++)  //查找第二个 
	{
		a1=k%10;
		 if(a[a1]==0)
		 {
		 	 a[a1]=1; //赋值为已经用过的 
		 }
		  else
		  {
		  	return false;  //不满足则返回false 
		   } 
		
		k=k/10;  //查找数的下一位 
	}
	
 
     return true;
	
}
 
 
int main()
{
	
	int a=900;
	int k;
	bool blo=false; 
	
	for(int i=6000;i<9999;i++)  //因为是四位数所以是1000到9999 
	{	
		for(int j=5000;j<9999;j++)
		{
			if(i-j<0)  break; //判断是否为小于0 ,如果小于0就不需要执行了 
			for(int k=10;k<99;k++)
			{
				long a=(i-j)*k;   //计算2值算出来是否满足为900 
				if(a==900)
				{
					if(i==5012&&j==4987&&k==36) break; 
			         bool	 bol=js(i,j,k);  //返回是否为所判断的条件 
					if(bol==true)//如果执行条件为成功就输出 
					{
						cout<<"("<<i<<"-"<<j<<")"<<"*"<<k<<endl;	
					}								
				 } 	
			}
		}
	}
	
	return 0;
}


![image.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/fbf233c1870a4af484d92a4c7c21538f~tplv-k3u1fbpfcp-watermark.image?)

本文已参与[新人创作礼]活动,一起开启崛金创作之路