编程序,求出……

来源:百度知道 编辑:UC知道 时间:2024/06/19 11:05:30
编程序,把1,2,3,4,5,6,7,8,9组合成三位数m1,m2,m3,要求每个数字仅用一次,使得m2=2*m1且m3=3*m1,例如m1=192.m2=384,m3=576

这个要怎么算啊 指点下算法就好,,谢谢啦

最简单的方法就是9个数排序,然后检验,通过了就输出,一个for循环就行。
第二种方法,嵌套三层for循环,编乘少麻烦些。

刚才无聊写了一个:

#include "stdlib.h"
#include "stdio.h"
#include "time.h"

int main(int argc, char **argv)
{
int isNumberOnUse[10];
int results[3];
int i, j, nTimes;

for (i = 0;i < 10;i++)
{
isNumberOnUse[i] = 0;
}
isNumberOnUse[0] = 1;

srand(time(NULL));
for (i = 0;i < 3;i++)
{
results[i] = 0;
for (j = 0;j < 3;j++)
{
int ran = rand() % 9 + 1;
while (isNumberOnUse[ran] == 1)
{
ran = rand() % 9 + 1;
}
isNumberOnUse[ran] = 1;
for (nTimes = 0;nTimes <j;nTimes++, ran*=10)
{
}
results[i] += ran;
}
}

for (i = 0;i < 3;i++)
{
printf("m%u = %d\n", i + 1, results[