3SUM
Contest: Codeforces Round 799 (Div. 4)
Difficulty rating: 1300
Tags: brute force, math

Given an array $$$a$$$ of positive integers with length $$$n$$$, determine if there exist three distinct indices $$$i$$$, $$$j$$$, $$$k$$$ such that $$$a_i + a_j + a_k$$$ ends in the digit $$$3$$$.

Input format:
The first line contains an integer $$$t$$$ ($$$1 \leq t \leq 1000$$$) — the number of test cases.

The first line of each test case contains an integer $$$n$$$ ($$$3 \leq n \leq 2 \cdot 10^5$$$) — the length of the array.

The second line of each test case contains $$$n$$$ integers $$$a_1, a_2, \dots, a_n$$$ ($$$1 \leq a_i \leq 10^9$$$) — the elements of the array.

The sum of $$$n$$$ across all test cases does not exceed $$$2 \cdot 10^5$$$.

Output format:
Output $$$t$$$ lines, each of which contains the answer to the corresponding test case. Output "YES" if there exist three distinct indices $$$i$$$, $$$j$$$, $$$k$$$ satisfying the constraints in the statement, and "NO" otherwise.

You can output the answer in any case (for example, the strings "yEs", "yes", "Yes" and "YES" will be recognized as a positive answer).

Constraints:
Time limit: 1.0 s
Memory limit: 256.0 MB

Note:
In the first test case, you can select $$$i=1$$$, $$$j=4$$$, $$$k=3$$$. Then $$$a_1 + a_4 + a_3 = 20 + 84 + 19 = 123$$$, which ends in the digit $$$3$$$.

In the second test case, you can select $$$i=1$$$, $$$j=2$$$, $$$k=3$$$. Then $$$a_1 + a_2 + a_3 = 1 + 11 + 1 = 13$$$, which ends in the digit $$$3$$$.

In the third test case, it can be proven that no such $$$i$$$, $$$j$$$, $$$k$$$ exist. Note that $$$i=4$$$, $$$j=4$$$, $$$k=4$$$ is not a valid solution, since although $$$a_4 + a_4 + a_4 = 1111 + 1111 + 1111 = 3333$$$, which ends in the digit $$$3$$$, the indices need to be distinct.

In the fourth test case, it can be proven that no such $$$i$$$, $$$j$$$, $$$k$$$ exist.

In the fifth test case, you can select $$$i=4$$$, $$$j=3$$$, $$$k=1$$$. Then $$$a_4 + a_3 + a_1 = 4 + 8 + 1 = 13$$$, which ends in the digit $$$3$$$.

In the sixth test case, you can select $$$i=1$$$, $$$j=2$$$, $$$k=6$$$. Then $$$a_1 + a_2 + a_6 = 16 + 38 + 99 = 153$$$, which ends in the digit $$$3$$$.

Example input:
6
4
20 22 19 84
4
1 11 1 2022
4
1100 1100 1100 1111
5
12 34 56 78 90
4
1 9 8 4
6
16 38 94 25 18 99

Example output:
YES
YES
NO
NO
YES
YES

Editorial:
Since we only care about the last digit of the sum $$$a_i + a_j + a_k$$$, we can ignore all numbers other than the last digits of the elements of $$$a$$$. (For example, we can consider $$$[20, 22, 19, 84]$$$ to be the same as $$$[0, 2, 9, 4]$$$.)
Now note that if a number appears more than $$$3$$$ times in the array, we can ignore all copies that occur more than $$$3$$$ times, since our sum $$$a_i + a_j + a_k$$$ only involves three numbers. (For example, we can consider $$$[1,1,1,1,2]$$$ to be the same as $$$[1,1,1,2]$$$.)
Using these observations, note that there are only $$$10$$$ digits, and each digit can occur at most $$$3$$$ times. So we can always reduce the array to one of length $$$30$$$. Since $$$30$$$ is very small, we can brute force all triples $$$a_i + a_j + a_k$$$, which runs quickly enough.
Time complexity: $$$\mathcal{O}(n + \min(n, 30)^3)$$$.