1149: 组合三位数之二
时间限制: 1 Sec 内存限制: 128 MB
提交: 3383 解决: 2286
[状态] [讨论版] [提交] [命题人:admin]
题目描述
把1,2,3,4,5,6,7,8,9,组成三个三位数(每个数只能用一次),第二个数是第一个数的2倍,第三个数是第一个数的3倍,这三个三位数各是多少?答案可能有很多组,请按第一个数的升序顺序输出每组的三个三位数。
输入
无
输出
输出所有满足条件的三位数组合,按第一个数的升序顺序输出。
样例输出 Copy
192 384 576
…
#include <stdio.h>
// 函数记录1-9数字使用的次数,如果都只使用一次返回1,否则返回-1
int Str(char b[])
{
int a[9] = {
0};
int index;
for(index = 0; 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 );
if ( Str(b) == 1 )
{
printf( "%d %d %d\n", i, i*2, i*3 );
}
}
return 0;
}