用1,2,3,…,9组成3个三位数abc,def和ghi,每个数字恰好使用一次,要 求abc:def:ghi=1:2:3。按照“abc def ghi”的格式输出所有解,每行一个解。
#include
#include
int main()
{
int n, i, j;
char a[10];
for(n = 123; n < 330; n++)
{
sprintf(a, "%d", n * 1000000 + n * 2 * 1000 + n * 3);
for(j = 0, i = '1'; i <= '9'; memchr(a, i++, 9) && j++);
if (j == 9)
printf("%d %d %d \n", n, n * 2, n * 3);
}
return 0;
}
public class C{
public static void main(String args[]){
int n,x,y,z,i;
for (n=123;n<=329;n++){ //由题意,最小数为123,最大数987,则最小数字n的取值为123到329
int a[]=new int[10]; //定义数组a
int b[]=new int[9]; //定义数组b
x=n*2;y=n*3; //给x,y进行赋值,值分别为n的两倍和三倍
b[0]=n/100;b[1]=(n%100)/10;b[2]=n%10;
b[3]=x/100;b[4]=(x%100)/10;b[5]=x%10;
b[6]=y/100;b[7]=(y%100)/10;b[8]=y%10; //将n,x,y拆分后存入数组b
for (i=0;i<9;i++){
z=b[i];
a[z]=z;
}//将数组b中保存的数字存入数组a,此时,a中只保存b出现过的数字,例如b[]={2,9,2},则a[]={2,9},其余为0
a[0]=0;
for (i=0;i<10;i++){a[0]=a[0]+a[i];}//将a中从下标1到下标9保存的数字求和,只有当a保存了1到9时,才能得出结果45
if (a[0]==45){System.out.println(n+" "+x+" "+y);} //若满足a[0]=45,说明满足题目要求,输出
}
}
}
运行结果如下图
java新人,不会啥高级操作,求赞求采纳