Bizga \(n\) ta kristallar energiyalari berilgan: \(a_1, a_2, \dots, a_n\), va yana maxfiy son \(k\). Shunday \((i, j)\) indekslar juftligini \((1 \le i < j \le n)\) topishimiz kerakki, ularning yig'indisi \(k\) ga qoldiqsiz bo'linsin, ya'ni \((a_i + a_j) \pmod k == 0\). Jami shunday juftliklar sonini chiqarish talab etiladi.
Asosiy g'oya (Matematik yondashuv / Modular Aritmetika):
Ikkita \(a_i\) va \(a_j\) sonlarining yig'indisi \(k\) ga bo'linishi uchun ularning \(k\) ga bo'lgandagi qoldiqlari yig'indisi \(k\) ga bo'linishi kerak. Boshqacha qilib aytganda:
\((a_i + a_j) \pmod k \equiv 0\) \( \iff\) \((a_i \pmod k + a_j \pmod k)\) \(\pmod k \equiv 0\)
Bu shartdan kelib chiqib ikki xil holatni ko'rishimiz mumkin:
Algoritm (Chastota massivi yoki Hash Map yordamida):
Murakkablik:
Vaqt murakkabligi: \(O(n)\) — massivni bir marta to'liq qarab chiqish va qoldiqlarni hisoblash kifoya. \(n \le 2 \cdot 10^5\) cheklovi uchun juda tez ishlaydi.
Xotira murakkabligi: \(O(k)\) yoki \(O(n)\) — qoldiqlar chastotasini saqlash uchun.