要求:将0到9这十个数字分成三个3位数,要求第一个3位数,正好是第二个3位数的1/2,是第三个3位数的1/3。问应当怎样分,编写程序实现。
#声明:本代码思路较为简单,但书写复杂请酌情参考。
---------------------------------------------------------------------------------------------------------------------------------
思路:先组合出第一个三位数,用if语句判断每一个数字需互不相同;再组合第二个三位数,判断三个数字互不相同的同时还不能与第一个三位数的三个数字相同;以此规律组合第三个三位数。
代码:
#include <stdio.h>
int main()
{
int arr[] = { 0,1,2,3,4,5,6,7,8,9 };
int i, j, k, x, y, z, u, v, t;
int a, b, c;
for (i = 1; i < 10; i++)
{
for (j = 0; j < 10; j++)
{
if (j != i)
{
for (k = 0; k < 10; k++)
{
if (k != i && k != j)
{
a = arr[i] * 100 + arr[j] * 10 + arr[k];//第一个三位数
for (x = 1; x < 10; x++)
{
if (x != i && x != j && x != k)
{
for (y = 0; y < 10; y++)
{
if (y != x && y != i && y != j && y != k)
{
for (z = 0; z < 10; z++)
{
if (z != x && k != y && z != i && z != j && z != k)
{
b = arr[x] * 100 + arr[y] * 10 + arr[z];//第二个三位数
for (u = 1; u < 10; u++)
{
if (u != i && u != j && u != k && u != x && u != y && u != z)
{
for (v = 0; v < 10; v++)
{
if (v != u && v != i && v != j && v != k && v != x && v != y && v != z)
{
for (t = 0; t < 10; t++)
{
if (t != u && t != v && t != i && t != j && z != k && t != x && t != y && t != z)
{
c = arr[u] * 100 + arr[v] * 10 + arr[t];//第三个三位数
if (b == 2 * a && c == 3 * a)
{
printf("%d,%d,%d\n", a, b, c);
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
return 0;
}