통계, IT, AI

9. Special Pythagorean triplet 본문

IT/PROJECT_EULER

9. Special Pythagorean triplet

Harold_Finch 2017. 1. 2. 23:34

1. 개요

문제는 이곳에서 확인할 수 있다. 합이 1000인 서로 다른 3개의 자연수 가운데, 가장 큰 수의 제곱이 나머지 두 수의 제곱의 합과 같은 자연수를 찾고 그것의 곱을 구하는 것이 목표이다.

2. Ver 1.0

가장 작은 자연수를 \(a\)라고 하자. \(a\)는 1이상, 332이하이다. 332보다 크다면 문제의 조건을 충족시킬 수 없기 때문이다. 같은 이유에서 두번째로 큰 자연수 \(b\)는 \(a+1\)이상, \((1000-a)/2-1\)이하이다. 이 조건을 이용하여 코딩한다.

using System;

class ProjectEuler
{
	static void Main(string[] args)
	{
		for(int a=1; a<=332; a++)
		{
			for(int b=a+1; b<=(1000-a)/2-1; b++)
			{
				int c = 1000 - a - b;
				
				if(c*c == a*a + b*b)
				{
					Console.WriteLine("a = " + Convert.ToString(a));
					Console.WriteLine("b = " + Convert.ToString(b));
					Console.WriteLine("c = " + Convert.ToString(c));
					Console.WriteLine("product Of a, b and c = " + Convert.ToString(a*b*c));
				}
			}
		}
	}
}

답은 31875000이다. 문제의 해설을 보니 더 기발한 방법이 있지만 이해가 어려워 Ver 2.0은 작성하지 않는다.

'IT > PROJECT_EULER' 카테고리의 다른 글

11. Largest product in a grid  (0) 2017.01.03
10. Summation of primes  (0) 2017.01.03
8. Largest product in a series  (0) 2017.01.01
7. 10001st prime  (0) 2016.01.14
6. Sum square difference  (0) 2016.01.10
Comments