https://www.hackerrank.com/contests/hourrank-25/challenges/constructing-a-number
N個の数がある。
この数を(各桁単位で)バラバラにして再構築することで1つの数を作る。
上手く再構築して3の倍数に出来るか判定せよ。
解法
3の倍数であるには「各桁の総和が3の倍数」を満たせばいい。
どのように再構築しても各桁の総和が変化することはないので、
全ての数の全ての桁の総和を求めて、3の倍数かどうか判定すればいい。
int N; //--------------------------------------------------------------------------------------------------- void solve() { cin >> N; int sm = 0; rep(i, 0, N) { int x; cin >> x; while (x) { sm += x % 10; x /= 10; } } if (sm % 3 == 0) printf("Yes\n"); else printf("No\n"); } //--------------------------------------------------------------------------------------------------- void _main() { int T; cin >> T; rep(t, 0, T) solve(); }