Problem: 2050C - Uninteresting Number
Language: java

Solution 1 (runtime: 280 ms):
import java.io.*;
import java.util.*;

public class TLE {
  public static PrintWriter out = new PrintWriter(new BufferedOutputStream(System.out));
  static FastReader in = new FastReader();

  public static void main(String[] args) throws Exception {
    int testCases = in.nextInt();
    while (testCases-- > 0) {
      solve();
    }
    out.close();
  }

  private static void solve() {
    long sum = 0;
    String s = in.next();
    int two = 0, three = 0;
    for (char c : s.toCharArray()) {
      sum += c - '0';
      if (c == '2') {
        two++;
      } else if (c == '3') {
        three++;
      }
    }
    for (int t = 0; t <= two; t++) {
      for (int th = 0; th <= three; th++) {
        if ((sum + 2 * t + th * 6) % 9 == 0) {
          System.out.println("YES");
          return;
        }
      }
    }
    System.out.println("NO");

  }

  static class FastReader {
    BufferedReader br;
    StringTokenizer st;

    public FastReader() {
      br = new BufferedReader(new InputStreamReader(System.in));
    }

    String next() {
      while (st == null || !st.hasMoreElements()) {
        try {
          st = new StringTokenizer(br.readLine());
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
      return st.nextToken();
    }

    int nextInt() {
      return Integer.parseInt(next());
    }

    long nextLong() {
      return Long.parseLong(next());
    }

    double nextDouble() {
      return Double.parseDouble(next());
    }

    String nextLine() {
      String str = "";
      try {
        str = br.readLine();
      } catch (IOException e) {
        e.printStackTrace();
      }
      return str;
    }
  }
}


Solution 2 (runtime: 311 ms):
import java.io.*;
import java.util.*;

public class UninterestingNumber {
    public static void main(String[] args) throws IOException {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer tokenizer = new StringTokenizer(in.readLine());

        int t = Integer.parseInt(tokenizer.nextToken());
        ArrayList<String> ans = new ArrayList<>();

        for (int i = 0; i < t; i++) {
            tokenizer = new StringTokenizer(in.readLine());
            String n = tokenizer.nextToken();
            int num = simplify(n);

            if (num == 0) {
                ans.add("YES");
                continue;
            }

            int num2 = numTwos(n);
            int num3 = numThrees(n);

            boolean canAdd = false;

            if (num == 1) {
                if (num3 >= 1 && num2 >= 1) {
                    canAdd = true;
                } else if (num2 >= 4) {
                    canAdd = true;
                }
            } else if (num == 2) {
                if (num3 >= 2 && num2 >= 2) {
                    canAdd = true;
                } else if (num3 == 1 && num2 >= 5) {
                    canAdd = true;
                } else if (num2 >= 8) {
                    canAdd = true;
                }
            } else if (num == 3) {
                if (num3 >= 1 || num2 >= 3) {
                    canAdd = true;
                }
            } else if (num == 4) {
                if (num3 >= 2 && num2 >= 1) {
                    canAdd = true;
                } else if (num3 == 1 && num2 >= 4) {
                    canAdd = true;
                } else if (num2 >= 7) {
                    canAdd = true;
                }
            } else if (num == 5) {
                if (num2 >= 2) {
                    canAdd = true;
                }
            } else if (num == 6) {
                if (num3 >= 2) {
                    canAdd = true;
                } else if (num3 == 1 && num2 >= 3) {
                    canAdd = true;
                } else if (num2 >= 6) {
                    canAdd = true;
                }
            } else if (num == 7) {
                if (num2 >= 1) {
                    canAdd = true;
                }
            } else if (num == 8) {
                if (num3 >= 1 && num2 >= 2) {
                    canAdd = true;
                } else if (num2 >= 5) {
                    canAdd = true;
                }
            }

            if (canAdd) {
                ans.add("YES");
                continue;
            }
            ans.add("NO");
        }

        for (String s : ans) {
            System.out.println(s);
        }
    }

    public static int numTwos(String x) {
        int ret = 0;
        for (char a : x.toCharArray()) {
            if ((a - '0') == 2) ret++;
        }
        return ret;
    }

    public static int numThrees(String x) {
        int ret = 0;
        for (char a : x.toCharArray()) {
            if ((a - '0') == 3) ret++;
        }
        return ret;
    }

    public static int simplify(String x) {
        int ret = 0;
        for (char a : x.toCharArray()) {
            ret += (a - '0');
        }
        return ret % 9;
    }
}