Я пытаюсь решить проект euler # 4 с помощью С #, и, согласно предыдущим сообщениям, я не мог найти никакого решения этой проблемы с С #.
Вопрос в том:
Палиндромное число одинаково читается в обоих направлениях. Самый большой палиндром, составленный из двух двузначных чисел, равен 9009 = 91 99.
Найдите самый большой палиндром, составленный из двух трехзначных чисел.
Ниже мой код, но когда я смотрю, как он работает, я не вижу своей ошибки. Как я могу это исправить?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace CS_11_project_Euler_problem_4
{
class Program
{
static void Main(string[] args)
{
int x, y;
string product="" , res="";
for (x = 100; x <= 999; x++)
{
for (y = 100; y <= 999; y++)
{
product = Convert.ToString(x*y);
if (product == new String(product.Reverse().ToArray()))
{
Console.WriteLine("X=" + x + " Y=" + y );
res = product;
Console.WriteLine("Polindrome is: " + res);
}
else { continue; }
}
}
}
}
}
Результат, который нашел мой код, - 580085, вот скриншот моего вывода. Он отображает каждый номер палиндрома результата с его множителями.
Хотя, согласно projecteuler.net, мой результат неверен. Один из моих выходов дал мне фактический результат. 906609. Это второй результат перед последним палиндромом моего кода. Я думаю, что я был неправ, думая, что увеличение множителей внутри вложенных циклов for, потому что оно было непреднамеренно основано на самом большом X, дает самую большую логику умножения. Чтобы предотвратить это, я собираюсь еще раз преобразовать свои res и product в целое число и всегда сохранять больший результат продукта в переменной product