(百题编程)64.乘式还原

题目:A代表数字0到9中的前五个数字,Z代表后五个数字,请还原下列乘式。
    A Z A
 × A A Z
 ------------
   A A A A
   A A Z Z
   Z A A
 ------------
 Z A Z A A
 
//题目:A代表数字0到9中的前五个数字,Z代表后五个数字,请还原下列乘式。
/* A Z A
 × A A Z
 ------------
   A A A A
   A A Z Z
   Z A A
 ------------
 Z A Z A A
 */
//by as1138 2011-10-07

#include<iostream>
using namespace std;
bool pan1(int tt);//判断第一个数
bool pan2(int tt);//判断第二个数
bool pan3(int tt);//判断第三个数
bool pan4(int tt);//判断第四个数

int main(void)
{
	int i,j,k,l,m,n;
	int tem,t1,t2,t3;
	int sum;
	
	for (i=0;i!=5;++i)
	 for(j=5;j!=10;++j)
	  for(k=0;k!=5;++k)
	  {
		  tem = i*100+j*10+k;
         for(l=5;l!=10;++l)
		 {
			 t1 = tem*l;
			 if(t1>=1000&&pan1(t1))
			 {
				 for (m=0;m!=5;++m)
				 {
					 t2 = tem*m;
					 if (t2>=1000&&pan2(t2))
					 {
                         for (n=0;n!=5;++n)
                         {
                            t3 = tem*n;
							if (t3>=100&&pan3(t3))
							{
								sum = t1+t2*10+t3*100;
                               if (sum>=10000&&pan4(sum))
                               {
								   cout<<" "<<i<<j<<k<<endl;
								   cout<<"*"<<n<<m<<l<<endl;
								   cout<<"___________"<<endl;
								   cout<<t1<<endl;
								   cout<<t2<<endl;
								   cout<<t3<<endl;
								   cout<<"___________"<<endl;
								   cout<<sum<<endl;
                               }
							}//end if(t3...)
                         }//end for n
					 }//end if(t2...)
				 }//end for m
			 }//end if(t1...)
		 }//end for l
	  }//end for k
	
   return 0;
}

bool pan1(int tt)
{
	int t;
	while (tt != 0)
	{
		t = tt%10;
		if(t>4)
			return false;
		tt/=10;
	}
	return true;
}

bool pan2(int tt)
{
	int t;
    t = tt%10;
	if(t<5)
		return false;
	tt/=10;

	t = tt%10;
	if(t<5)
		return false;
	tt/=10;
    
	t = tt%10;
	if(t>4)
		return false;
	tt/=10;

	t = tt%10;
	if(t>4)
		return false;

	return true;
}

bool pan3(int tt)
{
   int t;
   t = tt%10;
   if(t>4)
	   return false;
   tt/=10;

   t = tt%10;
   if(t>4)
	   return false;
   tt/=10;

   t = tt%10;
   if(t<5)
	   return false;
   tt/=10;

   return true;
}

bool pan4(int tt)
{
  int t;
  t = tt%10;
  if(t>4)
	  return false;
  tt/=10;

  t = tt%10;
  if(t>4)
	  return false;
  tt/=10;
  
  t = tt%10;
  if(t<5)
	  return false;
  tt/=10;

  t = tt%10;
  if(t>4)
	  return false;
  tt/=10;

  t = tt%10;
  if(t<5)
	  return false;

  return true;
}

你可能感兴趣的:((百题编程)64.乘式还原)