2017年 蓝桥杯模拟赛,猜算式(纯暴力)




题目:猜算式


你一定还记得小学学习过的乘法计算过程,比如:


   273
x   15
------
  1365
  273
------
  4095
  
请你观察如下的乘法算式


    ***
x   ***
--------
    ***
   ***
  ***
--------
  *****
  
星号代表某位数字,注意这些星号中,
0~9中的每个数字都恰好用了2次。
(如因字体而产生对齐问题,请参看图p1.jpg)


请写出这个式子最终计算的结果,就是那个5位数是多少?


注意:只需要填写一个整数,不要填写任何多余的内容。比如说明文字。


纯暴力解决 注意 题目要求 0-9的数字都包含两项, 

#include<stdio.h>
#include<string.h>
int ans[10];
void  ddd(int x)
{
	while(x)
	{
		ans[x%10]++;
		x/=10;
	}
 } 
int main()
{
	int i,j,k;
	int fflag;
	for(i=100;i<1000;i++)
	{
		for(j=100;j<1000;j++)
		{
			fflag=0;
			if(i*j>100000)
				break;
			memset(ans,0,sizeof(ans));
			int a[2];
			a[0]=i; a[1]=j;
			ddd(a[0]);
			ddd(a[1]);
			ddd(i*j);
			int b[3],temp1=i;
			k=0;int temp2=j;
			while(temp2)
			{
				b[k]=temp1*(temp2%10);
				if(b[k]>1000||b[k]<100)
				{
						fflag=1;
						break;
				}
					
				ddd(b[k++]);
				temp2/=10;
				
			}
				if(fflag)
					continue;	
			
			for(int l=0;l<=9;l++)
			{
				if(ans[l]!=2)
				{
					fflag=1;
						break;
				}
			}
			if(!fflag)
			{
				printf("%d\n",i*j);
				break;
			}
				
		}
		
	}
	
	
}




posted @ 2017-03-22 16:27  Sizaif  阅读(245)  评论(0编辑  收藏  举报