問題
高橋君は 円持ってゲームセンターにいる。
ゲームセンターでは「 円払って 枚のメダルを買う」ことが何回でもできるとき、高橋君の持つことのできるメダルの最大数を求めよ。
入力
1行に渡り、整数 の順で与えられる。
条件
出力
答えとなる整数を1行で出力すること。
解法
メダル交換には必ず 円が必要なことから、高橋君がメダル交換できる回数の最大値は \begin{align} \left\lfloor \frac{n}{x} \right\rfloor \end{align} で与えられます。 (ただし、 は整数への切り捨てを表します。)
従って、この回数だけメダルを交換すると、メダルの枚数の最大値を得られることになるので、求める最大値は \begin{align} \left\lfloor \frac{n}{x} \right\rfloor \cdot y \end{align} で与えられます。
の値の最大値が であるので、C++の int
型で扱うとオーバーフローを起こす可能性があることに注意が必要です。
ソースコード
main()
関数の中に、直接答えを出力する部分を実装しました。
int main() { ll n, x, y; // すべての整数を long long 型として扱う cin >> n >> x >> y; // 値の入力 cout << (n / x) * y << endl; // 値の出力 return 0; }