题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
由 4 个不同的数字,组成的一个乘法算式,它们的乘积仍然由这 4 个数字组成。
比如:
210 x 6 = 1260
8 x 473 = 3784
27 x 81 = 2187
都符合要求。
如果满足乘法交换律的算式算作同一种情况,那么,包含上边已列出的 3 种情况,一共有多少种满足要求的算式。
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
#include<bits/stdc++.h>
using namespace std;
int ds[10] = {0};
bool check(int x, int y) {
int n = x * y;
memset(ds , 0 , sizeof(ds));
while(x) {
ds[x % 10]++;
x /= 10;
}
while(y) {
ds[y % 10]++;
y /= 10;
}
for(int i = 0; i <10; i++) {
if(ds[i] == 2) {
return false;
}
}
while(n) {
ds[n % 10]++;
n /= 10;
}
for(int i = 0; i <10; i++) {
if(ds[i] != 2 && ds[i] != 0){
return false;
}
}
return true;
}
int main() {
int cnt = 0;
for(int i = 0; i < 1000; i++) {
for(int j = 0; j < 1000; j++) {
if(i < 10 && j >= 100 || i >= 10 && i < 100 && j >= 10 && j <100 || i >= 100 && j < 10) {
if(check(i, j)) {
//cout << i << " " << j << endl;
cnt++;
}
}
}
}
cout << cnt / 2;
return 0;
}