문제 링크
(2024/7/17 기준) Diamond V

문제 읽기

연속된 정수 구간 QQ와 연속된 양의 정수 구간 PP가 있습니다. 연속된 구간 PQPQ에 대하여, 구간 QQ의 길이 qq가 주어졌을 때, 구간 PP의 합과 구간 QQ의 합이 같을 때의 가능한 pp가 몇 개나 있을지 세어봅시다.

예시

9+10+11+12P=13+14+15Q\underbrace{9+10+11+12} _{P} = \underbrace{13+14+15} _{Q}p=4p=4, q=3q=3인 예시입니다.

4+5+6+7+8P=9+10+11Q\underbrace{4+5+6+7+8} _{P} = \underbrace{9+10+11} _{Q}p=5p=5, q=3q=3인 예시입니다.

풀이

먼저, p>qp>q임을 캐치합시다. 구간 PP는 항상 구간 QQ의 왼쪽에 붙어있기 때문에, pqp\leq q라면, 항상 구간 PP의 합은 구간 QQ의 합보다 작습니다. 따라서, p>qp>q여야만 두 구간의 합이 같을 수 있습니다.

양의 정수 nn이 구간 PP의 오른쪽 끝이라고 합시다.
구간 QQ의 합은 당연히 양의 정수이므로, 구간 PP의 합이 양의 정수가 되기 위해서는, nn이 양의 정수여야 함이 자명합니다.

구간 PP의 합은, n+(n1)++(np+1)p terms\underbrace{n+(n-1)+\cdots+(n-p+1)} _{p\text{ terms}}이므로, pnp(p1)2pn-\frac{p(p-1)}{2}로 정리할 수 있습니다.
같은 방법으로, 구간 QQ의 합은, (n+1)+(n+2)++(n+q)q terms\underbrace{(n+1)+(n+2)+\cdots+(n+q)} _{q\text{ terms}}이므로, qn+q(q+1)2qn+\frac{q(q+1)}{2}로 정리할 수 있습니다.

두 합이 같아야 하므로, pnp(p1)2=qn+q(q+1)2pn-\frac{p(p-1)}{2}=qn+\frac{q(q+1)}{2}로 놓고, 식을 조금 변형합시다.
(pq)n=p2+q22pq2(p-q)n=\frac{p^2 + q^2}{2} - \frac{p-q}{2}, p>qp>q이므로, 양변을 (pq)(p-q)로 나누면, n=p2+q22(pq)12n=\frac{p^2 + q^2}{2(p-q)}-\frac 1 2입니다.
p2+q2=p2q2+2q2=(p+q)(pq)+2q2p^2 + q^2 = p^2 - q^2 + 2q^2 = (p+q)(p-q) + 2q^2를 이용해서 다시 정리해주면,
n=p+q12+q2pqn=\frac{p+q-1}{2} + \frac{q^2}{p-q}가 됩니다.
이를 만족하는 모든 nn, pp의 쌍을 찾아봅시다!

nn이 양의 정수이므로, pp, qq의 홀짝성(parity)에 따라 케이스를 나눠야 합니다.

1-1. pp는 홀수, qq는 짝수

p+qp+qpqp-q는 모두 홀수입니다.
p+q12\frac{p+q-1}{2}은 양의 정수이고, q2pq\frac{q^2}{p-q}도 양의 정수여야 합니다.

따라서, (pq)q2(p-q) \vert q^2입니다.

1-2. pp는 홀수, qq는 홀수

pqp-qp+qp+q가 모두 짝수입니다.
p+q12\frac{p+q-1}{2}이 정수가 아니므로, q2pq\frac{q^2}{p-q}2m12\frac{2m-1}{2}꼴이어야 합니다. (단, mm은 양의 정수)

따라서, q2pq=2q22(pq)=12×2q2pq\frac{q^2}{p-q} = \frac{2q^2}{2(p-q)} = \frac{1}{2} \times \frac{2q^2}{p-q}로 변형할 수 있고, (pq)2q2(p-q) \vert 2q^2입니다.

2-1. pp는 짝수, qq는 홀수

pqp-qp+qp+q가 모두 홀수입니다.
q2pq\frac{q^2}{p-q}이 정수여야 하므로, (pq)q2(p-q) \vert q^2.

약간의 관찰을 더 해봅시다.
pqp-q가 홀수이므로, q2q^222 소인수들은 있으나 마나입니다. (qq가 짝수이므로 반드시 22를 적어도 하나 소인수로 갖는데, pqp-q는 홀수이므로 22를 소인수로 가질 수 없습니다.)
q=2k×rq=2^k \times r이라고 하면, (pq)r2(p-q) \vert r^2입니다.

2-2. pp는 짝수, qq는 짝수

pqp-qp+qp+q가 모두 짝수입니다.
p+q12\frac{p+q-1}{2}이 정수가 아니므로, q2pq\frac{q^2}{p-q}2m12\frac{2m-1}{2}꼴이어야 합니다. (단, mm은 양의 정수)

2-1. 에서 사용한 아이디어를 가져와서, q2=22k×r2q^2 = 2^{2k} \times r^2이고, pqp-q22k+1×s2^{2k+1} \times s꼴이어야 합니다. (단, ss홀수)

다시 정리해보면, q2pq=12×r2s\frac{q^2}{p-q} = \frac 1 2 \times \frac{r^2}{s}이므로, sr2s \vert r^2입니다.

결론

위의 4가지 케이스를 정리해 봅시다.

1-1. 1-2. 케이스를 정리해 보면, 1-1.에서 가능한 pp의 개수는 qqq2q^2가 모두 홀수이므로, q2q^2의 약수의 개수와 같다는 것을 알 수 있고, 1-2.에서 가능한 모든 pqp-q들은 1-1.에서 가능한 모든 pqp-q들에 22를 곱한 값이고, 이들은 서로 홀짝성이 다르기 때문에, 전부 서로 다른 정수임을 알 수 있습니다.

따라서, qq가 홀수일 때 가능한 pp의 개수는 q2q^2의 약수의 개수의 22배가 됩니다.

2-1. 2-2. 케이스도 정리해 보면, 2-1.에서의 pqp-q가 가질 수 있는 값이 r2r^2의 약수뿐이고, 2-2.에서 ss가 가질 수 있는 값도 r2r^2의 약수뿐이니, 가능한 pqp-qss의 개수는 각각 r2r^2의 약수의 개수로 같습니다. 다만, 2-2.pqp-qs×22k+1s \times 2^{2k+1}이므로 2-1.에서의 pqp-q와 각각 다르고, 홀짝성도 다르므로, 전부 서로 다른 정수임을 알 수 있습니다.

따라서, qq가 짝수일 때 가능한 pp의 개수는 q=2k×rq=2^k \times r인 홀수 rr에 대하여, r2r^2의 약수의 개수의 22배가 됩니다.

1-1.~2-2.를 모두 일반화 시킬 수도 있습니다. qq22로 나누어떨어지지 않을 때까지 나눈 수를 qq^{\prime}이라고 하면, {q}2\lbrace q^{\prime} \rbrace ^ 2의 약수의 개수의 22배가 문제의 정답이 됩니다.

구현은 에라토스테네스의 체를 쓰든 폴라드-로를 쓰든 넉넉하게 통과됩니다.
참고로 저는 안전하게 폴라드-로를 사용했습니다.

약수의 개수를 구하는 방법은… 중학교 수학 내용이니, 다들 아시길 바라며 넘어가겠습니다.

후기

제가 처음으로 자력솔에 성공한 다이아몬드 문제입니다. 난이도 외에 어떠한 정보도 없이 스스로 해결한 문제라 더욱 뿌듯하네요.
3일정도 시간이 걸렸고 (사실 요즘 ps를 잘 안 하긴 합니다.), 공책도 6장 넘게 사용했습니다.

블로그에 올린 이유는 문제가 되게 재밌었기도 하고, 백준 메모에 TeX\TeX 문법으로 남겨둔 수식도 많았고, 이미 다른 분이 블로그에 먼저 올리셨는데, 저와 접근이 조금 달라 보여서 올려봤습니다.

읽어주셔서 감사합니다.