鉛筆リサイクルの新技術 [AtCoder Regular Contest 011 A]
冷静にシミュレーションします。
N 本の鉛筆は、最初に必ず販売できるので、まずこれを答えに足します。
次に、以下の操作を鉛筆が m 本未満になるまでおこないます。
・回収した鉛筆から製品を作る(N/m*n 本作れる)
・製品を作った後に出た余りを求める(N%m 本余る)
・次に製品を作るときに使える鉛筆の数を求める
→今販売した N/m*n 本と、余った N%m 本
・今販売した本数を答えに足す(N/m*n 本)
この一連の操作をコードにすると以下のようになります。
void solve () { int m = nextInt(), n = nextInt(), N = nextInt(); int ans = N, seihin = 0, amari = 0; while (N >= m) { seihin = N/m*n; amari = N%m; N = seihin + amari; ans += seihin; } out.println(ans); }
冒頭にも書きましたが「冷静に」「一つずつ」シミュレーションすることが大事だと思います。