Official
A - Takoyaki Editorial by chokudai
まず、たこ焼きを何回焼く必要があるかを求め、その後かかる時間を掛け算することで、答えを求めることが出来ます。
たこ焼きを何回焼くかですが、これは \(N / X\) を切り上げたものになります。ここで、天井関数ceil
を用いて、ceil(N/X)
などと書きたくなりますが、これは多くの言語において不正解となります。
やり方は複数ありますが、例えば以下のように書くのが最も分かりやすいです。
int times;
if(N % X == 0) times = N / X;
else times = N / X + 1;
多くの言語において、整数の除算は切り捨てとなるので、切り捨てられる時だけ \(+1\) してあげることで、正しく切り上げ計算をすることが出来るようになります。
この計算は、実は以下のような表現でも行うことが出来ます。
int times = (N + X - 1) / X;
この式においては、割られる数に \(X-1\) を足してあげることにより、ちょうど割り切れる時以外は答えが \(1\) 増えるようになっています。頻出テクニックなので覚えておくと良いかもしれません。
また、ceil関数を使いたいのであれば、
int times = (int)ceil((double)N / X);
などと記述することは出来ますが、これは、整数演算を一度小数演算に変換するので、誤差などに気を使う必要が出てくるため、あまりおすすめしません。
回答例(C++)
#include <iostream>
using namespace std;
int main(){
//入力を受け取る
int N, X, T;
cin >> N >> X >> T;
//たこ焼きを焼く回数を求める
int times = (N + X - 1) / X;
//答えを求める
int ans = times * T;
//答えを出力する
cout << ans << endl;
}
posted:
last update: