Project Euler问题4的解决方案不正确

时间:2018-11-04 18:42:17

标签: c++ xcode

我是编程新手。我已经在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;
}

1 个答案:

答案 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);
    });