三角形になるかどうかの判定
p, a,それとさっき求めたbの値を使って三角形になるかどうかの判定は(3)式を使う
コード
using System.Diagnostics;
namespace Problem39
{
class Program
{
static void Main(string[] args)
{
P39 p = new P39();
Debug.WriteLine(p.Solve());
}
}
class P39
{
<summary>
</summary>
public P39()
{
}
<summary>
</summary>
<returns></returns>
public int Solve()
{
int maxPatternCount = 0;
int maxP = 1;
for (int p = 1; p <= 1000; p++)
{
int patternCount = SetSides(p);
if (patternCount > maxPatternCount)
{
maxPatternCount = patternCount;
maxP = p;
}
}
return maxP;
}
<summary>
</summary>
<param name="p"></param>
<returns></returns>
private int SetSides(int p)
{
int patternCount = 0;
for (int a = 1; a < p / 2; a++)
{
int b = (p * (2 * a - p)) / (2 * (a - p));
if (a > b) break;
if (IsMakeTriangle(p, a, b) == true)
{
patternCount++;
}
}
return patternCount;
}
<summary>
</summary>
<param name="p"></param>
<param name="a"></param>
<param name="b"></param>
<returns></returns>
private bool IsMakeTriangle(int p, int a, int b)
{
if (a * a + b * b == (p - a - b) * (p - a - b))
{
return true;
}
return false;
}
}
}