Description
把1,2,3,4,5,6,7,8,9,组成三个三位数(每个数只能用一次),第二个数是第一个数的2倍,第三个数是第一个数的3倍,这三个三位数各是多少?答案可能有很多组,请按第一个数的升序顺序输出每组的三个三位数。
Input
无
Output
输出所有满足条件的三位数组合,按第一个数的升序顺序输出。
Sample Input
Sample Output
192 384 576219 438 657.........
HINT
Source
#include <stdio.h>
#include <stdlib.h>
int checkStr( char b[] )
{
int a[9] = {0};
int index = 0;
for ( ; index < 9; index ++ )
{
switch( b[index] )
{
case '1':
{
a[0] ++;
break;
}
case '2':
{
a[1] ++;
break;
}
case '3':
{
a[2] ++;
break;
}
case '4':
{
a[3] ++;
break;
}
case '5':
{
a[4] ++;
break;
}
case '6':
{
a[5] ++;
break;
}
case '7':
{
a[6] ++;
break;
}
case '8':
{
a[7] ++;
break;
}
case '9':
{
a[8] ++;
break;
}
}
}
if ( a[0] == 1 && a[1] == 1 && a[2] == 1 && a[3] == 1 && a[4] == 1 &&
a[5] == 1 && a[6] == 1 && a[7] == 1 && a[8] == 1 )
{
return 1;
}
return -1;
}
int main()
{
int i ;
char b[10] = {0};
for ( i=100; i <333; i ++ )
{
sprintf( b, "%d%d%d", i, i*2, i*3 );//将int型以字符串形式读入,便于后面查重复数字
if ( checkStr( b ) == 1 )
{
printf( "%d %d %d\n", i, i*2, i*3 );
}
}
return 0;
}