TopCoder SRM 150 DIV 1 Easy 練習
問題
ある自然数n(2 ≦ n ≦ 30)について、n進法で数を表記したとき、ある一桁の数kの倍数は全てその桁を合計するとkの倍数になるようなkを全て求めなさい。
たとえば10進法において、 159 * 3 = 477, 4+7+7 = 15 = 3 * 5 なので3が該当する。
解
全部やればいい。
using System; using System.Text; using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; public class InterestingDigits { public int[] digits(int bs) { int to = (int)Math.Pow(bs, 3); int b2 = bs * bs; List<int> res = new List<int>(); for (int i = 2; i < bs; ++i) { res.Add(i); for (int j = i; j < to; j += i) { if ((j / b2 + j % b2 / bs + j % bs) % i != 0) { res.Remove(i); break; } } } return res.ToArray(); } }