Решение головоломки c ++ кода иногда работает, а иногда нет - PullRequest
2 голосов
/ 05 апреля 2020

Я изучаю c ++ и заинтересовался проектными головоломками Эйлера. Это головоломка, в которой вам нужно найти наибольшее число палиндромов из двух чисел, умноженных на 3 ди git. Во всяком случае, мне удалось решить эту загадку, но я заметил странное поведение. Иногда этот код работает, а иногда отображает странное число. Код написан на C ++:

#include <bits/stdc++.h> 

using namespace std;

// Find the largest palindrome made from the product of two 3-digit numbers.

int main()
{

    string palindrome = "";
    string reversed;

    int64_t biggest;

    //reverse(palindrome.begin(), palindrome.end());
    //cout << palindrome << endl;

    for (int a = 999; a >= 100; a--){
        for (int b = 999; b >= 100; b--){
            palindrome = to_string(a*b);
            reverse(palindrome.begin(), palindrome.end());

            if (palindrome == to_string(a*b)){
                if (a*b > biggest) biggest = a*b;
            }
        }
    }

    cout << biggest;

    return 0;
}

Спасибо за любые ответы, которые помогают мне понять, что происходит.

РЕДАКТИРОВАТЬ: код может быть не очень эффективным, но он должен ( в теории) делать работу грубой силой. Он перебирает все a от 0 до 999 и b от 0 до 999, сравнивая a * b с переменной "gest ". Если a * b больше самый большой , то самый большой заменяется на * b.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...