Problem:
Score : 200 points

Problem Statement

An integer N is a multiple of 9 if and only if the sum of the digits in the decimal representation of N is a multiple of 9.

Determine whether N is a multiple of 9.

Constraints

0 \leq N < 10^{200000}

N is an integer.

Input

Input is given from Standard Input in the following format:

N

Output

If N is a multiple of 9, print Yes; otherwise, print No.

Sample Input 1

123456789

Sample Output 1

Yes

The sum of these digits is 1+2+3+4+5+6+7+8+9=45, which is a multiple of 9, so 123456789 is a multiple of 9.

Sample Input 2

0

Sample Output 2

Yes

Sample Input 3

31415926535897932384626433832795028841971693993751058209749445923078164062862089986280

Sample Output 3

No

Solution in C# (.NET Core 3.1.201) (judge verdict: Accepted)

using System;
using System.Collections.Generic;
using System.ComponentModel.Design;
using System.Linq;
using System.Text;

namespace AtCoder.ABC
{
	class QuestionB
	{
		public static void Main(string[] args)
		{
            var scanner = new Scanner();

            var s = scanner.next();

            var sum = 0L;
            for(int i = 0; i< s.Length; i++) {
                sum += s[i] - '0';
			}

            Console.WriteLine(sum % 9 == 0 ? "Yes" : "No");
		}

        class Scanner
        {
            string[] s;
            int i;

            char[] cs = new char[] { ' ' };

            public Scanner()
            {
                s = new string[0];
                i = 0;
            }

            public string next()
            {
                if (i < s.Length) return s[i++];
                string st = Console.ReadLine();
                while (st == "") st = Console.ReadLine();
                s = st.Split(cs, StringSplitOptions.RemoveEmptyEntries);
                if (s.Length == 0) return next();
                i = 0;
                return s[i++];
            }

            public int nextInt()
            {
                return int.Parse(next());
            }
            public int[] ArrayInt(int N, int add = 0)
            {
                int[] Array = new int[N];
                for (int i = 0; i < N; i++) {
                    Array[i] = nextInt() + add;
                }
                return Array;
            }

            public long nextLong()
            {
                return long.Parse(next());
            }

            public long[] ArrayLong(int N, long add = 0)
            {
                long[] Array = new long[N];
                for (int i = 0; i < N; i++) {
                    Array[i] = nextLong() + add;
                }
                return Array;
            }

            public double nextDouble()
            {
                return double.Parse(next());
            }


            public double[] ArrayDouble(int N, double add = 0)
            {
                double[] Array = new double[N];
                for (int i = 0; i < N; i++) {
                    Array[i] = nextDouble() + add;
                }
                return Array;
            }
        }
    }
}