题目:输入正整数n,按从小到大的顺序输出所有形如abcde/fghij=n的表达式,其中a—j恰好为数字0—9的一个排列(可以有0前导) 2=<n<=79
分析:简单枚举,通过枚举fghij来得到abcde,使用数组标记每个数的使用状态,当且仅当数组中的每个数都使用过后,结果有效。
#include <iostream>
using namespace std;
bool judge(int i, int j) {
int p[10];
memset(p, 0, sizeof(p));
if (j < 10000) {
p[0] = 1;
}
while (i) {
p[i % 10] = 1;
i = i / 10;
}
while (j) {
p[j % 10] = 1;
j = j / 10;
}
int res = 0;
for(int i = 0; i < 10; i++){
res += p[i];
}
return res == 10;
}
int main() {
int in;
while (scanf_s("%d", &in) == 1) {
for (int i = 1234; i < 98765; i++) {
if (i % in == 0) {
int j = i / in;
if (i == 79546 && j == 1283) {
int z = 0;
}
if (judge(i, j)) {
printf_s("%d / %05d = 62\n", i, j);
}
}
}
}
}