質問B:ブルーブリッジカップ(JAVAグループ)2015-8ドリンクの償還
件名リクエスト:
Leyangyang BeverageFactoryはプロモーション活動を行っています。LeyangyangタイプC飲料の場合、キャップが3つある場合、タイプC飲料の別のボトルと交換でき、永久にリサイクルできますが、クレジットは許可されていません。
Xiao Mingがボトルキャップを無駄にせず、可能な限り活動に参加する場合、最初に購入したnボトルの飲料について、最終的に何本の飲料を入手できるかを計算してください。
購入する飲料の数を示す整数nを入力します(0 <n <10000)
実際に得られた飲み物の数を表す整数を出力します。
サンプル入力コピー
100
サンプル出力コピー
149
問題解決のアイデア:
3本ごとに新しいボトルの飲料と交換できます。
所有している飲料の総数を3で割って、今回交換できる飲料の数を求めます。新しい飲料と交換できない飲料が0〜2ボトル残っている可能性があります。現在の飲料の総数を使用できます。この交換で残っているボトルの数を取得するには、残りの3つを取ります。次に、1回の交換後、私たち
が持っている飲み物の数==交換された飲み物+残りの飲み物と交換されました。
次回の交換は、お飲み物の数が3個未満になり、交換ができなくなるまで続けます。
この時点で、交換できる飲料ボトルの総数に加えて、最初に持っていた飲料ボトルの数、つまり、入手した飲料ボトルの総数を取得します。
通関コード:
#include <iostream>
using namespace std;
int main() {
int bought, n, res = 0;
cin >> n;
bought = n;
while (n >= 3) {
res = res + (n / 3);
n = (n / 3) + (n % 3);
}
cout << bought + res;
return 0;
}
コンプリート。