好友
阅读权限20
听众
最后登录1970-1-1
|
本帖最后由 luoluoovo 于 2019-3-17 00:39 编辑
今天看了一个求助帖,然后我试着写出来了。题目在最后面。
代码有点乱,学C语言大概有1个月吧,有什么可以改进的大家多给点意见。
思路就是先遍历被除数 (4位数的不重复数字,且不包含0),归到一个数组中。
再从数组中拿出来乘上n。
在它们寻找当中寻找有5位数的不重复数字(不包含0),在和被除数每位进行比较,都不相同则符合条件。
原帖 https://www.52pojie.cn/thread-901040-1-1.html
[img=110,1]https://www.52pojie.cn/forum.php?mod=image&aid=1428161&size=300x300&key=e8f779d373ec0b16&nocache=yes&type=贴图错误,请阅读“贴图帮助”。
[C] 纯文本查看 复制代码 #include <stdio.h>
void numslist(int c[],long temp) {
int i = 0;
do {
c[i++] = temp % 10;
} while (temp = temp / 10);
}
void algorithm(int n,int result[]) {
int x=0;
int list[5000] = { 0 }, k = 0;
int a[6];
int c[6];
int num = 1234;
long put;
a:while (num <= 9876)
{
numslist(a, num);
num += 1;
for (int i = 0; i < 4; i++)
{
if (a[i] != 0)
{
switch (i)
{
case 0:if (a[i] == a[i + 3]) goto a;
case 1:if (a[i] == a[i + 2]) goto a;
case 2:if (a[i] == a[i + 1]) goto a;
}
}
}
list[k++] = num - 1;
}
k = 0;
b:while (list[k] != 0 && n * list[k] <= 98765 && n * list[k] >= 12345)
{
put = n * list[k];
numslist(c, put);
k++;
for (int i = 0; i < 5; i++)
{
if (c[i] != 0)
{
switch (i)
{
case 0:if (c[i] == c[i + 4]) goto b;
case 1:if (c[i] == c[i + 3]) goto b;
case 2:if (c[i] == c[i + 2]) goto b;
case 3:if (c[i] == c[i + 1]) goto b;
}
}
else
goto b;
}
numslist(a, list[k - 1]);
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 4; j++)
{
if (c[i] == a[j])
goto b;
}
}
result[x++] = put/62;
}
}
int main() {
int result[10] = {0};
int n;
scanf_s("%d", &n);
algorithm(n, result);
if (result[0]==0)
{
printf("没有找到!");
getchar();
return 0;
}
printf("找到如下:\n");
for (int i=0; i < 10 && result[i] != 0; i++)
{
printf("%d/0%d=%d\n", result[i]*n,result[i],n);
}
getchar();
getchar();
return 0;
} |
-
-
免费评分
-
参与人数 1 | 吾爱币 +3 |
热心值 +1 |
收起
理由
|
苏紫方璇
| + 3 |
+ 1 |
欢迎分析讨论交流,吾爱破解论坛有你更精彩! |
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|