-3
我試圖解決Project Euler #4給出的問題:C++歐拉計劃#4碼錯誤
迴文數讀取相同的兩種方式。由兩個2位數字產品製成的最大回文數是9009 = 91×99.
查找由兩個3位數字產品製成的最大回文數。
我的解決方案中沒有任何編譯錯誤...但程序沒有提供正確的輸出。我想我在定義布爾函數時犯了一些錯誤。
任何想法?
#include <iostream>
#include <math.h>
using namespace std;
bool isPalindrome(int z) {
// store z in t to compare it later with its reversed number
int t = z;
int rev = 0;
// This while loop reverses the number
while (z > 0) {
int dig = z % 10;
rev = rev * 10 + dig;
z = z/10;
}
if (t == rev)
return true;
else
return false;
}
void palindrome(int k) {
int b = 0;
int a = pow(10, k);
// calculate product of two numbers
// replace it if it's palindrome and greater than previously stored value b
// for loop to calculate product of all 3 (in general k) digit numbers
for (int i = pow(10,k-1); i = pow (10,k) - 2; i++) {
for (int j = i; j = pow (10,k) - 2; j++) {
int c = i * j;
if (isPalindrome(c) && c > b) {
b = c;
}
}
}
cout << "Largest Palindrome = " << b << endl;
}
int main() {
int n;
cout << "Enter the digit length" <<"\t";
cin >> n;
palindrome(n);
return 0;
}
對於它不工作的例子,我嘗試輸入n = 3,它只是掛起,沒有輸出。我究竟做錯了什麼?
你的意思是什麼「該程序不起作用?」 – Massa
**版主說明**:請保留對主題的評論。關於評論是否不禮貌的爭論是非題的定義。 –
我正在使用devcpp。當我點擊編譯並運行時,輸入控制檯打開。 我把3作爲輸入後,什麼也沒有發生 – user3485318