我知道在给定数字的情况下找出回文的代码,我试图将其概括为找到由两个 3 位数的乘积组成的最大回文,如下所示:-
#include<stdio.h>
#include<conio.h>
void main()
{
int i,no,d,j,temp;
int sum=0;
clrscr();
for(i=1;i<1000;i++)
{
for(j=1;j<1000;j++)
{
sum=0;
no=i*j;
temp=no;
while(no>0)
{
d=no%10;
sum=sum*10 + d;
no=no/10;
}
if(sum==temp)
{
printf("number is Palindrome %d\n",sum);
}
}
}
getch();
}
但是,我没有得到解决方案,任何人都可以帮忙吗?
最佳答案
int sum=0
应该在内层 for 循环中,就在 no=i*j
行之前:
对于每个新数字,总和的值应从零开始。如果放在最开始,它会取前一个no
生成的sum
的值给所有的no
。
如果在 while
循环之前将 sum=0
放在 j
循环中,那么对于 i*j< 的每个新组合
总和将从 0
开始,您将 100% 获得所有需要的回文
关于c++ - 最大的回文产品-程序无法运行,写了解决方案但无法理解问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52840442/