C++ 投影仪 #4 代码错误

c++ projecteuler #4 code mistake

本文关键字:错误 代码 投影仪 C++      更新时间:2023-10-16

我正在尝试解决欧拉项目#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,它只是挂起,没有输出。 我做错了什么?

在我看来

,你的问题出在这条线上,

for (int i = pow(10,k-1); i = pow (10,k) - 2; i++) {

考虑循环将如何终止。