题目来自:https://www.luogu.com.cn/problem/P1618
将 1, 2,\ldots, 91,2,…,9 共 99 个数分成三组,分别组成三个三位数,且使这三个三位数的比例是 A:B:CA:B:C,试求出所有满足条件的三个三位数,若无解,输出 No!!!
。
//感谢黄小U饮品完善题意
三个数,A,B,CA,B,C。
若干行,每行 33 个数字。按照每行第一个数字升序排列。
273 546 819 327 654 981
保证 A<B<CA<B<C。
#include <cstdio> #include <iostream> using namespace std; int main(){ int x,y,z; cin >> x >> y >> z; bool ok = false; for (int a = 1;a <= 9;a++) for (int b = 1;b <= 9;b++) for (int c = 1;c <= 9;c++) for (int d = 1;d <= 9;d++) for (int e = 1;e <= 9;e++) for (int f = 1;f <= 9;f++) for (int g = 1;g <= 9;g++) for (int h = 1;h <= 9;h++) for (int i = 1;i <= 9;i++) if (a + b + c + d + e + f + g + h + i == 45 && a * b * c * d * e * f * g * h * i == 362880){ if ((d * 100 + e * 10 + f) / y == (a * 100 + b * 10 + c) / x && (g * 100 + h * 10 + i) / z == (a * 100 + b * 10 + c) / x){ if ((a * 100 + b * 10 + c) % x == 0 && (d * 100 + e * 10 + f) % y == 0 && (g * 100 + h * 10 + i) % z == 0){ printf("%d %d %d\n",a * 100 + b * 10 + c,d * 100 + e * 10 + f,g * 100 + h * 10 + i); ok = true; } } } if (!ok) printf("No!!!"); return 0; }