SRM 612 Div2 Medium EmoticonsDiv2

問題

SRM 612 - TopCoder Wiki

絵文字をx個作りたい,初期状態で1個の絵文字が表示されている. 行える操作は以下

必要な総和数を返す問題.

解答

シミュレーションすれば良い.

class EmoticonsDiv2
{
public:
  int inf;
  int calc(int s, int x, int c) {
    // cout << "(" << s << "," << x << "," << c << ")" << endl;
    if (c > 0 && s % c != 0) return inf;
    if (s == x) return 0;
    return min(c==0?inf:1 + calc(s, x + c, c), 2 + calc(s, 2*x, x));
  }
  int printSmiles(int smiles)
    {
      inf = 1000000000;
      return calc(smiles, 1, 0);
    }
};