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: