其实这道题比较简单,我们可以使用枚举,按照所给出的比例,将满足比例的三个数列举出来,然后再判断是否满足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; }
原文:https://www.cnblogs.com/loliconsk/p/14280520.html