見出し画像

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」で求めることができます。

名称未設定 P1

割り切れる場合(真ん中)は-1した値を足しても元々の回答が返ってきます。ただし、割り切れない場合(上と下)は-1した値を足すことによって、元の回答+1の値が返ってきます。切り上げ除算の頻出テクニック(解説より)とのことなので覚えておくと良いと思います。

この記事が気に入ったらサポートをしてみませんか?