gpt4 book ai didi

c# - 找出由两个三位数字的乘积组成的最大回文 C#

转载 作者:行者123 更新时间:2023-11-30 22:57:47 25 4
gpt4 key购买 nike

我尝试用 C# 解决 projecteuler 4th project 但我没有收到正确的答案,我得到了 90909。有人能发现我的错误吗?

问题是这样的:

A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 × 99.

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

namespace Largest_palindrome_product{

class Program
{
static void Main(string[] args)
{
string Reverse(string s)
{
char[] charArray = s.ToCharArray();
Array.Reverse(charArray);
return new string(charArray);
}


int result = 0;
string rev= "hello";
string palindrome = "hello";
string bingo = "hello";
int j = 1;
for (int i = 1; i< 1000; i++)
{
for (int y = 1; y< 1000; y++)
{
result = i * y;
bingo = result.ToString();
rev = Reverse(bingo);
j = int.Parse(bingo);
}

if (rev == bingo)
{
palindrome = bingo;
}
}
Console.Write(palindrome);
Console.Read();
}
}

最佳答案

我认为造成如此多困惑的是 String 的使用,这只会使必须来回转换它们的事情变得复杂。

你的程序工作正常(如果 if 按照 John 的评论移动)只要你检查了新数字更大!

这是我的看法:

// stolen from https://www.geeksforgeeks.org/reverse-digits-integer-overflow-handled/
int Reverse(int num)
{
int rev_num = 0;
while (num > 0)
{
rev_num = rev_num * 10 + num % 10;
num = num / 10;
}
return rev_num;
}


int result = 0;
int palindrome = 0;
int j = 1;
for (int i = 999; i > 0; i--)
{
for (int y = 999; y > 0; y--)
{
result = i * y;
if (result == Reverse(result))
{
if (result > palindrome)
{
palindrome = result;
}
}
}
}
Console.Write(palindrome);
Console.Read();

关于c# - 找出由两个三位数字的乘积组成的最大回文 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53415792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com