2015-06-30 65 views
-3

Q.迴文數字讀取方式相同。由兩個2位數字產品製成的最大回文數是9009 = 91×99.用C++解決項目euler#4

查找由兩個3位數字產品製成的最大回文數。

這是我的代碼。它工作2位數的問題,給了9009作爲答案,但它不適用於3位數字部分。

#include <iostream> 
using namespace std ; 
bool ispallin(int n) 
{ 
int reverse = 0, temp; 
temp = n; 

while (temp != 0) 
{ 
    reverse = reverse * 10; 
    reverse = reverse + temp%10; 
    temp = temp/10; 
    } 

    if (n == reverse) 
    return true; 
    else 
    return false; 


} 
int main() { 
int a[999*999]={0},i,j,no;//0 implies no. at i th position is pallindrome 
for(i=100;i<1000;i++) 
{ 
for(j=100;j<1000;j++) 
{ 
    if(a[i*j]==0)//no. is pallin 
    { 
     if(ispallin(i*j)) 
     no=i*j; 

     else a[i*j]=1;//no. at this pos is not pallindrome 
} 
} 

} 
cout<<no; 
return 0; 
} 
+0

你是什麼意思,「它不工作」? – user463035818

+0

不給我提供正確答案 –

回答

1

你的代碼是非常好的,我想補充一點點的意見也許有意義的名稱的功能,但它是好的代碼,答案是不是你要找的人,因爲你永遠不確信結果是最高的。 也許700 * 700將是一個迴文,但然後701 * 600也將是一個迴文,我的例子一旦'我'更大,它將覆蓋結果,即使polindrom是一個更大的。