SRM 504.5 250pt: TheNumbersWithLuckyLastDigit
問題概要
n(<10^9)が与えられる。nを10*k+4と10*k+7の和で表現したい。最小でいくつ必要か求める問題。
解法
mod 10で考えれば良さそう。10通り場合分けすればO(1)で通る。
感想
手で解くのは不安材料が多すぎる。nが大きい場合は適当にmodをとったりして全探索をかける方が好ましかった。後コーディングも「反復は避けよ」に反するものとなってしまった。
書くべきだったコード
int ans[] = {5,2,3,5,1,3,4,1,2,4}; int lb[] = {20,11,12,23,1,15,16,1,1,19}; class TheNumbersWithLuckyLastDigit { public: int find(int n) { return n>=lb[n%10]?ans[n%10]:-1; }