用1、2、3、4、5这五个数字组成一个两位数和一个三位数。要使乘积最大,应该是哪两个数?要使乘积最小呢?

有什么依据得出的?... 有什么依据得出的? 展开
artintin
2012-02-16 · TA获得超过1.2万个赞
知道大有可为答主
回答量:7508
采纳率:80%
帮助的人:2773万
展开全部
要使乘积最大 很明显 在两位数中 十位数大于个位数,在三位数中应该是百位数大于十位数, 十位数大于个位数
所以两个个位数定义有个1,我们先确定1在两位数中还是在三位数中
考虑三位数ab1×两位数cd 的结果 和三位数abd×两位数c1的结果
由(100*a+10*b+1)*(10*c+d)-(100*a+10*b+d)*(10*c+1)=(100a+10b-10*c)(d-1)>0
知前者乘积更大,
这样我们仅需要计算6种情形即可(4个数选2个决定两位数即可)
54*321=17334; 53*421=22313;52*431=22412
43*521=22403;42*531=22302;32*541= 17312
最大的是52*431=22412

找乘积最小的类似,决定5已定是三位数的个位而不是两位数的各位再考虑剩下的六种情形
12*345=4140;13*245=3185;14*235=3290;
23*145=3335;24*135=3240;34*125=4250;
最小的是13*245=3185
biosorry
2012-02-15 · TA获得超过7074个赞
知道大有可为答主
回答量:2546
采纳率:78%
帮助的人:788万
展开全部
最大:52*431=22412
最小:13*245=3185

#include <stdio.h>
void main()
{
int a,b,c,d,e,s,xa,xb,na,nb;
int min=10000,max=0;
for(a=1;a<6;a++)
{
for(b=1;b<6;b++)
{
if(b!=a)
{
for(c=1;c<6;c++)
{
if(c!=a && c!=b)
{
for(d=1;d<6;d++)
{
if(d!=a && d!=b && d!=c)
{
for(e=1;e<6;e++)
{
if(e!=a && e!=b && e!=c && e!=d)
{
s=(10*a+b)*(100*c+10*d+e);
if(s<min)
{
min=s;
na=10*a+b;
nb=100*c+10*d+e;
}
if(s>max)
{
max=s;
xa=10*a+b;
xb=100*c+10*d+e;
}
}
}
}
}
}
}
}
}
}
printf("Max:%d*%d=%d\nmin:%d*%d=%d\n",xa,xb,max,na,nb,min);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hmxdp123
2012-02-15
知道答主
回答量:19
采纳率:0%
帮助的人:2.7万
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式