![見出し画像](https://assets.st-note.com/production/uploads/images/33218281/rectangle_large_type_2_508bb971aa8429d4e6095872f5046dd6.jpg?width=1200)
AtCoder Beginner Contest 176を見直すA - Takoyaki
問題
x個のたこ焼きをt分で作れるたこ焼き機があります、n個のたこ焼きを作るのに必要な分数を計算する問題
作成したコード
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, x, t;
cin >> n >> x >> t;
if (n%x == 0) cout << n/x*t << endl;
else cout << (n/x+1)*t << endl;
}
何回焼くと求めるたこ焼きの個数になるのかは、n/xの切り上げ除算で求めることができます。CPPだとCeilを使うらしいんですが、覚えてなかったので、条件分けしています。n/xが割り切れない場合は、割った数に1を足しています。解説をみたところ以下のように更にシンプルに書けるようです。
解説を参照に作成したコード
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, x, t;
cin >> n >> x >> t;
cout << ((n+x-1)/x)*t << endl;
}
n/xの切り上げ除算は上記のように「(n+x-1)/x」で求めることができます。
割り切れる場合(真ん中)は-1した値を足しても元々の回答が返ってきます。ただし、割り切れない場合(上と下)は-1した値を足すことによって、元の回答+1の値が返ってきます。切り上げ除算の頻出テクニック(解説より)とのことなので覚えておくと良いと思います。
この記事が気に入ったらサポートをしてみませんか?