其实这道题比较简单, 我们可以使用枚举, 按照所给出的比例, 将满足比例的三个数列举出来, 然后再判断是否满足 1~9 都有
因为只有三个数, 所以我们从 1 开始一直到 999, 然后将每一个三位数的每一位提取出来放在一个长度为 10 的数组中, 每提取一个相应的数组位加 1, 最后如果数组下标 1~9 都是 1 的话就输出三个数
注意: 1. 每一位都是不超过 999 的数字, 我刚开始写就犯了这样的错误 2. 比例序列和数字都用 double, 不然推数的时候会出错
- #include<iostream>
- #include<cstring>
- using namespace std;
- int a[10];
- int main(void)
- {
- double A, B, C,v = 0;
- cin>> A>> B>> C;
- double _1, _2, _3;
- for (int i = 1; i <1000; i++)
- {
- _1 = i;
- _2 = _1 * (B / A);
- _3 = _1* (C / A);
- if (_2> 999 || _3> 999) break;
- int m = _1;
- while (m)
- {
- a[m % 10]++;
- m /= 10;
- }
- m = _2;
- while (m)
- {
- a[m % 10]++;
- m /= 10;
- }
- m = _3;
- while (m)
- {
- a[m % 10]++;
- m /= 10;
- }
- int q = 1;
- for (int i = 1; i < 10; i++)
- {
- if (a[i] != 1)
- {
- q = 0;
- break;
- }
- }
- if (q)
- {
- cout << _1 << "" << _2 <<" " << _3 << endl;
- v = 1;
- }
- memset(a, 0, sizeof(a));
- }
- if (v == 0)
- {
- cout << "No!!!" << endl;
- }
- return 0;
- }
来源: http://www.bubuko.com/infodetail-3716478.html