палиндром — c ++ projecteuler # 4 кодовая ошибка

Я пытаюсь решить проблему, приведенную в Проект Эйлера № 4:

Палиндромное число читается одинаково в обоих направлениях. Самый большой палиндром, полученный из произведения двух двузначных чисел, равен 9009 = 91 × 99.

Найдите самый большой палиндром из двух трехзначных чисел.

В моем решении нет ошибок компиляции … но программа не выдает правильный вывод. Я думаю, что я сделал некоторую ошибку в определении булевой функции.

Есть идеи?

#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, и он просто зависает без вывода. Что я делаю неправильно?

-3

Решение

Мне кажется, что ваша проблема в линии,

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

Подумайте, как закончится ваш цикл.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]