Ruteです!皆さんAtCoder Beginner Contest 176 お疲れ様でしたー!!
今回は、A問題・B問題・C問題早解きという、ABC164以来のABC早解きコンテストとなりました。
おそらく、「ABCを3完して撤退」という方も多かったと思います。
今回は、A問題・B問題・C問題の解説を3言語で解説していきたいと思います!!
##各問題・解説へのリンク
A | B | C |
---|---|---|
この記事です!! | [ABC 176 B] (https://qiita.com/rute_not_route/items/d22bafa86bdf1140b217) | ABC 176 C |
それでは、A問題の解説から始めます!!
#問題概要
たこ焼き機は、一度に最大で$X$個のたこ焼きを作ることができる。作るのにかかる時間は個数によらず$T$分である。
$N$個のたこ焼きを作るためには何分必要かを出力せよ。
##制約
・$1 \leq N,X,T \leq 1000$
・入力は全て整数
#解説
##解法1(天井関数の利用)
$N$個のたこ焼きを作るために必要なたこ焼き機の使用回数は$\lceil{\frac{N}{X}}\rceil$です。
(ここで、$\lceil{A}\rceil$は、Aの天井関数といい、具体的には$A$以上の最小の整数という意味を持ちます。)
よってそれに$T$を掛けたものが$N$個のたこ焼きを作るために必要な時間なので、これを出力すればよいです!!
##解法2 (条件分岐の利用)
または、以下の様な条件分岐を考えても良さそうです。
・もし $N$を$X$で割った余りが0なら N/X*T
を出力し、そうでなければ(N/X+1)*T
を出力する。
以下、Python3,C++,Javaでの解答例を示します。
(Python3は解法1で、C++は解法2で解いたコードを解答例としています。)
##各言語解答例
Python3での解答例
import math
n,x,t = map(int,input().split())
A = math.ceil(n/x)
print(A*t)
※math
というライブラリにあるceil
という関数を用いて天井関数を求めています。
C++での解答例
#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;
}
}
Javaでの解答例
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int x = scan.nextInt();
int t = scan.nextInt();
if (n%x == 0){
System.out.println(n/x*t);
}else{
System.out.println((n/x+1)*t);
}
}
}