填写乘法算式
时间: 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;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。