葡萄栽种技术:把1至9这九个数分成3个三位数,其中这3个三位数的关系是1倍、2倍、3倍的关系。求这三个三位数?

来源:百度文库 编辑:高校问答 时间:2024/05/07 05:15:49
要求写出详细的解题过程。
请注意要求步骤,光答案我都知道。以为分这么好得么?yayoyoya - 魔法学徒 一级好厉害,但我要步骤呀,我真的急需。

一种比较笨的方法,不知道有没有漏掉的:
设三个数分别为: abc、uvw、xyz,由uvw=2abc可以得到:2c->w为偶数。
所有可能的w、z、c组合为:
w=2 2 4 4 6 6 8 8
c=1 6 2 7 3 8 4 9
z=3 8 6 1 9 4 2 7
a只能为1、2、3,所有a、u、x的可能组合为(abc+uvw=xyz->a+u=x或a+u+1=x,uvw=2abc->2a=u或2a+1=u):
a=1 1 1 1 2 2 2 2 3
u=2 2 3 3 4 4 5 5 6
x=3 4 4 5 6 7 7 8 9
所有可能没有重复数字的
a_c u_w x_y 剩余的数字
1_8 2_6 3_4 5、7、9
1_9 2_8 3_7 4、5、6

1_3 2_6 4_9 5、7、8
1_9 2_8 4_7 3、5、6

1_6 3_2 4_8 5、7、9
1_9 3_8 4_7 2、5、6

1_6 3_2 5_8 4、7、9
1_2 3_4 5_6 7、8、9
1_8 3_6 5_4 2、7、9
1_4 3_8 5_2 6、7、9
1_9 3_8 5_7 2、4、6

2_9 4_8 6_7 1、3、5

2_3 4_6 7_9 1、5、8

2_3 5_6 7_9 1、4、8
2_8 5_6 7_4 1、3、9

2_7 5_4 8_1 3、6、9
2_3 5_6 8_9 1、4、7

3_7 6_4 9_1 2、5、8
3_4 6_8 9_2 1、5、7

结果:
192 384 576
219 438 657
273 546 819
327 654 981

用分析排除法得出答案为327,654,981。
设这三个三位数为a1a2a3,b1b2b3,c1c2c3,且满足a1a2a3=1/2b1b2b3=1/3c1c2c3,a1、a2、a3、b1、b2、b3、c1、c2、c3为1-9自然数,且互不相等,以下主要分析a1、b1、c1、a2、b2、c2、a3、b3、c3的取值是否满足唯一性即可,由题意易得a1可能值为1,2,3,故得b1,c1取值有一下三组:
(1)a1=3 b1=6,7,8 c1=9;
(2)a1=2 b1=4,5,6 c1=6,7,8;
(3)a1=1 b1=2,3 c1=3,4,5;
以下分析第(1)组:
a1=3,c1=9,当b1=6时,因a2*2不能有进位,故a2取值只能为1,2;当a2=1时,尾数a3可能取值=24578,分别代入算出对应的b1b2b3,c1c2c3...
只有327,654,981符合。
以上为较笨的方法,不知有没更好的。

#include "stdio.h"
int a[9];
int fun(int*z,int t)
{
int *p1,*p2;
for(p1=z;p1<z+3;p1++)
{
*p1=t%10;
t=t/10;
for(p2=a;p2<p1;p2++)
if(*p1==0||*p2==*p1)
return 0;
}
return 1;
}
void main()
{
int m,count=0;
for(m=123;m<333;m++)
if(fun(a,m)&&fun(a+3,2*m)&&fun(a+6,3*m))
printf("No.%d: %d %d %d\n",++count,m,2*m,3*m);
}

结果没问题

192 384 576
219 438 657
273 546 819
327 654 981
是正确的.只要这四种答案的.

挺难,期待答案

327、654、981。 厉害也