510.1

1時間しか参加できないことが確定していたので、1000と心中することに。

250, 500

見てない。

1000

ある数をK進数表現することを考える。各桁は10進数表現であるとして、各桁に登場する数字が、4および7のみからなるようなKはいくつあるか答えよ、という問題。


元の数が4と7だけでできている場合、元の数より大きいKに対して常に成り立つので、それ以外のケースを考える。二桁の場合は全探索。4や7からなる数は元の数がM桁なら2^(M+1)個くらい。全部探索すると終わらないけれど、実際に上の桁になる数は元の数の平方根以下でないとまずいので、これは十分間に合う。


三桁以上の場合、一番上の桁を決めてしまうと、Kとして可能なものの範囲をかなり狭めることができる。これはpow関数とかを使ってやれば良い。後はこの範囲を全探索してやれば、終わる。(ただしかなりギリギリなので、一番上の桁が小さい数のときはある程度例外処理が必要かも知れない。)