Я изучаю 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.