는 문제가 있었다 : 방정식브 루트 포스 방지 : 계수 솔루션 프로그래밍 대회에서
카운트 모든 솔루션 :
x + 4y + 4z = n
. 귀하는 이고 주어진 숫자는n
이며 솔루션 수를 결정하게됩니다. x, y 및 z는 양의 정수라고 가정합니다.
나는 루프 (무차별 공격)를 위해 트리플을 사용하는 것을 고려해 보았지만, 시간이 지나치게 길어서 불충분했다. (n = 1000,000 일 수 있기 때문에) :
int sol = 0;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n/4; j++)
{
for (int k = 1; k <= n/4; k++)
{
if (i + 4 * j + 4 * k == n)
sol++;
}
}
}
내 친구가 문제를 해결할 수 있습니다. 내가 그에게 물었을 때, 그는 그가 무차별 대수를 전혀 사용하지 않는다고 말했다. 대신 방정식을 '계열'(즉, 합산)으로 변환했습니다. 나는 그가 어떻게 거절했는지에 관해 물어 보았다. 그러나 그는 거절했다. :)
나는 그것을 알 수 있냐?
x, y 및 z는 종종 실수를 나타냅니다. 그들은 정수라고 여기는가? 양? 또는 음수입니까? – thiton
잠재적으로 유용함 : http://en.wikipedia.org/wiki/Diophantine_equation#Linear_Diophantine_equations – sarnold
이 방정식은 무한 개수의 정수 솔루션을 포함하는 R3의 평면을 정의합니다. 무한한 집합을 쓸 수는 없다.) – Blender