我是编程新手。我已经在Euler项目上创建了问题4的解决方案。但是,我的代码似乎有问题,没有给我想要的结果。当前的问题是找到通过将两个3位数字相乘而创建的最大回文。当我将两个循环都从100开始时(这是通过将两个2位数相乘得到的最大回文率),代码可以正常工作。在这种情况下,我的输出是90909,而应该是906609。有人可以查看我的代码并为我提供帮助吗?
#include "iostream"
using namespace std;
int checkPalindrome(int);
int main()
{
int prod;
for(int i=1000;i>0;i--)
for(int j=1000;j>0;j--)
{
prod=i*j;
if(checkPalindrome(prod))
{ cout<<prod;
cout<<endl;
exit(0);
}
}
}
int checkPalindrome(int x)
{
int temp=0,copy;
copy=x;
while(x!=0){
temp=temp*10+(x%10);
x/=10;
}
if(copy==temp)
return 1;
else
return 0;
}
答案 0 :(得分:0)
您实际上并没有搜索通过将两个3位数字乘以您的解决方案而创建的最大回文,而是搜索循环找到的第一个回文。您可以像这样正确设置:
this.service.getAccountDetails(username)
.pipe(
catchError((error: Error) => {
//Do some error stuff
return of(null);
})
);
this.service.getAccountDetails(username)
.subscribe(account =>{
this.podcasts.push(account);
});