如果k<10就会出现重复打印的情况,不知道是哪个逻辑出错了。虽然看了题解明白自己的代码很多余,但还是想在优化前找出自己的思维漏洞,如果有大佬能帮忙感激不尽。
include<stdio.h>
int main()
{
int k = 0,up=0,mid=0,down=0,tru=0;
scanf("%d", &k);
for(int a = 1; a<=3; a++)
{
if (a == 3)
{
int act = 0;
up = 300;
mid = 0;
down = 0;
if (up % k || mid % k || down % k)
break;
act =30000;
printf("%d\n", act);
tru = 1;
break;
}
for (int b=0;b<=9;b++)
{
for (int c=0;c<=9;c++)
{
for (int d = 0; d <= 9; d++)
{
for (int e = 0,act=0; e <= 9; e++)
{
up = a * 100 + b * 10 + c;
mid= b * 100 + c * 10 + d;
down= c * 100 + d * 10 + e;
if ((up % k) ||(mid % k)||(down % k))
continue;
act = a * 10000 + b * 1000 + c * 100 + d * 10 + c;
printf("%d\n", act);
tru = 1;
}
}
}
}
}
if (!tru)
printf("No");
return 0;
}