C语言作业选做题II-输出一列式子(简单哈希表)
于2020年6月1日2020年6月1日由Sukuna发布
题目:输入一个数字p然后输出abcde/fghij=p的式子,而且abcdefghij互不相同
Sample Input 32
Sample Output 75168/02349=32
代码:我这个方法比较蠢,看看有没有大佬能提供更好的方法
代码语言:javascript复制#include<stdio.h>
#include<math.h>
int main() {
int x;
scanf_s("%d", &x);
int tem,flag=1;
int HashSet[10] = { 0 };//标记0-9的HashSet
for (int i = 1000;i < 99999 / x; i ) {
flag = 1;
tem = x * i;//先构造a/b=x的式子
if (i < 10000) {
HashSet[0] = 1;//不足一万的,那肯定有个0,置0为1
}
for (int temp = i; temp > 0;) {
HashSet[temp % 10 ] = 1;//挨个把哈希表设置好,先遍历除数
temp /= 10;
}
for (int temp = tem; temp > 0;) {
HashSet[temp % 10] = 1;//再遍历被除数
temp /= 10;
}
for (int j = 0; j < 10; j ) {
if (!HashSet[j]) {//遍历哈希表,看有无0项
flag = 0; break;
}
}
for (int k = 0; k < 10; k ) {
HashSet[k] = 0;//哈希表置0,准备下一次循环
}
if (!flag) continue;
else printf("]/]=%dn", tem, i, x);
}
}