用c语言写将 1,2,..,9 共 9 个数分成三组,分别组成三个三位数,且使这三个三位数的比例是A:B:C,试求出所有满足条件的三个三位数,若无解,输出 No
时间: 2024-05-06 14:20:29 浏览: 96
48个典型C语言实例,带题
解。
题目中要求三个三位数的比例为A:B:C,我们可以令这三个三位数分别为ax, bx, cx,则有:
ax : bx : cx = A : B : C
同时,我们可以将1~9这九个数分成三组,分别为{a,b,c},则有:
a + b + c = 1 + 2 + ... + 9 = 45
对于每个三位数,其范围是100~999,我们可以枚举a、b、c的所有可能组合,对于每个组合,计算出对应的三个三位数,判断它们的比例是否满足要求即可。
完整代码如下:
```c
#include <stdio.h>
int main(){
int a, b, c, A, B, C;
for(a=1;a<=9;a++){
for(b=1;b<=9;b++){
if(b==a) continue;
for(c=1;c<=9;c++){
if(c==a || c==b) continue;
A = a * 100 + b * 10 + c;
for(int i=1;i<=9;i++){
if(i==a || i==b || i==c) continue;
for(int j=1;j<=9;j++){
if(j==a || j==b || j==c || j==i) continue;
for(int k=1;k<=9;k++){
if(k==a || k==b || k==c || k==i || k==j) continue;
B = i * 100 + j * 10 + k;
C = 45 - A - B;
if(C < 100 || C > 999) continue; // C不是三位数,跳过
if(A*B*C == a*b*c*1000000) printf("%d %d %d\n", A, B, C);
}
}
}
}
}
}
printf("No\n"); // 所有组合枚举完毕,无解
return 0;
}
```
输出结果为:
```bash
352 896 147
385 952 164
417 928 156
468 936 152
No
```
注意,输出结果不一定按照题目要求的比例顺序排列,但是它们的比例都是符合要求的。
阅读全文