Official

A - Attack Editorial by PCTprobability


AtCoder をはじめたばかりで何をしたらよいか分からない方は、まずは practice contest の問題A「Welcome to AtCoder」を解いてみてください。基本的な入出力の方法が載っています。
また、プログラミングコンテストの問題に慣れていない方は、AtCoder Beginners Selection の問題をいくつか解いてみることをおすすめします。


この問題では、入出力と小数点以下を切り上げる割り算が要求されています。また、制約が \(10^{18}\) と大きいため、適した型を用いる必要があります。

正整数 \(A,B\) に対して、\(\frac{A}{B}\) の切り上げは、 \(\frac{A+B-1}{B}\) を切り捨てと等しいためこの式を計算することで求めることが出来ます。また、\(A\)\(B\) で割り切れる場合は \(\frac{A}{B}\)、そうでない場合は \(\frac{A}{B} + 1\) の切り捨てなどでも求めることが出来ます。

小数型の ceil を使う場合は、C++ の double などを使ってしまうと精度が足りなくなってしまいサンプル 3 などで正しい答えを求められません。(long double などを使えば今回の制約下では正当な答えを求められます。)

また、型については 32 bit 整数だとオーバーフローしてしまうため、64 bit 整数(long long)などを用いる必要があります。

実装例(C++)

#include<bits/stdc++.h>
using namespace std;
int main(){
  long long a,b;
  cin>>a>>b;
  cout<<(a+b-1)/b<<endl;
}

実装例(Python)

A, B = map(int, input().split())
print((A + B - 1) // B)

posted:
last update: