問題
問題文
高橋くんの家には電源プラグの差込口が $1$ 口しかありません。
そこで、高橋くんは $A$ 個口の電源タップをいくつか使って未使用の差込口を $B$ 口以上に拡張したいと考えています。
$A$ 個口の電源タップ $1$ つと未使用の差込口 $1$ 口を使って、新たに差込口を $A$ 口増やすことができます。
最小でいくつの電源タップが必要でしょうか。
制約
・入力は全て整数である。
・$2 \le A \le 20$
・$1 \le B \le 20$
収録されている問題セット
回答
回答1 (AC)
$A$ 個口の電源タップを増設すると差し込み口は $A-1$ 個増えます。現在の差し込み口の個数を now, 増設した電源タップの個数を add とおき、now が b より小さい間は増設を繰り返せば良いでしょう。コードは以下のようになりました。
abc139b-1.cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
int a, b;
cin >> a >> b;
int now = 1, add = 0;
while ( now<b ) {
now += a-1;
add += 1;
}
cout << add << endl;
}
回答1 (AC)
増設する電源タップの個数を計算式で求めることが出来ます。$A$ 個口の電源タップを増設すると差し込み口は $A-1$ 個増えます。増設した差し込み口の個数は最低で $B-1$ 個なので、必要な電源タップの個数は $\lceil \frac{B-1}{A-1} \rceil$ 個となります。割り算を小数にキャストすることが必要です。コードは以下のようになりました。
abc139b-2.cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
int a, b;
cin >> a >> b;
cout << ceil((float)(b-1)/(a-1)) << endl;
}
---
# 調べたこと
## [AtCoder の解説](https://atcoder.jp/contests/abc139/tasks/abc139_b/editorial) → [ユーザ解説](https://blog.hamayanhamayan.com/entry/2019/09/04/220545)
回答2と同じ方針でした。なお「切り上げする場合は、分子に分母-1を足すことで切り上げが可能」を採用すると、小数へのキャストが不要となるようです。
## [AtCoder の解説](https://atcoder.jp/contests/abc139/tasks/abc139_b/editorial) → [公式解説](https://img.atcoder.jp/abc139/editorial.pdf)
回答1と同じ方針でした。
# リンク
## 前後の記事
- 前の記事 → [AtCoderログ:0057 - ABC 042 B](https://qiita.com/RoadLynton/items/e8b9c37c092d51aaf418)
- 次の記事 → [AtCoderログ:0059 - AGC 027 A](https://qiita.com/RoadLynton/items/15ca251f738b15e80efa)