暴力思路
就是简单的枚举一下 3 3 3个数的可能性也就是说对于每个数都要枚举100~999每种可能。但是分析一下时间复杂度会发现TLE了,所以我们应该优化一下(这个思路我没写代码
优化思路
因为每个数的单位"1"都一样所以可以先求出单位"1"然后分别算出这 3 3 3个数然后用一个数组来存一下每个数的位数因此代码便是:
#include <iostream>
using namespace std;
#define int long long
signed main(){
int a, b, c;
cin >> a >> b >> c;
if(a == 0 || b == 0 || c == 0){
cout << "No!!!";
return 0;
}
bool have_ans = false;
for(int i = 100; i <= 999; i++){
if(i % a != 0){//i一定得是a的倍数
continue;
}
int j = i / a * b, k = i / a * c;
if((j > 999 || k > 999)){//而且这3个数都是三位数
break;
}
int x = i, y = j, z = k;
int s[10];
for(int i = 1; i <= 9; i++){
s[i] = 0;
}
while(x){
s[x % 10]++;
x /= 10;
}
while(y){
s[y % 10]++;
y /= 10;
}
while(z){
s[z % 10]++;
z /= 10;
}
bool flag = true;
for(int i = 1; i <= 9; i++){
if(s[i] != 1){
flag = false;
}
}
if(flag){
cout << i << ' ' << j << ' ' << k << endl;
have_ans = true;
}
}
if(!have_ans){
cout << "No!!!";
}
return 0;
}