填写乘法算式

填写乘法算式

时间: 1ms        内存:128M

描述:

观察下面的算式:

* * × * * = * * *

它表示:两个两位数字相乘,结果是3位数。其中的星号(*)代表任意的数字,可以相同,也可以不同,只要不是在首位的就可以是0。当然,满足这个要求的算式很多,但我们还有如下的要求:

所有星号所代表的数字全都是奇数。满足这个要求的算式就不多了。

比如:13 x 15 = 195

题目的任务是:编写程序,找到所有可能的情况。

输入:

输出:

输出的结果中,每个情况占用1行,不需要考虑不同情况如何排序问题。每行的格式如:
13 x 15 = 195
其中乘号用“x”表示。

示例输入:

示例输出:

提示:

参考答案(内存最优[744]):

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int i,j,k,m,n,b,v,num1=0,num2=0,num3=0;
    for(i=1;i<10;i=i+2)
      for(j=1;j<10;j=j+2)
         for(k=1;k<10;k=k+2)
          for(m=1;m<10;m=m+2)
            for(n=1;n<10;n=n+2)
              for(v=1;v<10;v=v+2)
                for(b=1;b<10;b=b+2){
                   num1=i*10+j;
                   num2=k*10+m;
                   num3=n*100+v*10+b;
       if(num1*num2==num3){
    printf("%d X %d = %d\n",num1,num2,num3);
         }

    }
    return 0;
}

参考答案(时间最优[0]):

#include <iostream>
using namespace std;
int main()
{
	for(int i=10;i<99;i++)
		for(int j=10;j<99;j++)
		{
			int n=i*j;
			int k;
			int l,m,o,p,y,t,u;
			l=i/10;
			m=i%10;
			o=j/10;
			p=j%10;
			k=n/1000;
			y=(n-k*1000)/100;
			t=(n-k*1000-y*100)/10;
			u=n%10;

			if(l%2==1&&m%2==1&&o%2==1&&p%2==1&&y%2==1&&t%2==1&&u%2==1&&k==0)
				cout<<i<<" "<<"X"<<" "<<j<<" "<<"="<<" "<<n<<endl;

		}
		
	return 0;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注