公式
A - お菓子の箱詰め / Packing Sweets into Boxes 解説
by
A - お菓子の箱詰め / Packing Sweets into Boxes 解説
by
kyopro_friends
初心者の方へ
- AtCoder をはじめたばかりで何をしたらよいか分からない方は、まずは practice contest の問題A「Welcome to AtCoder」を解いてみてください。基本的な入出力の方法が載っています。
- また、プログラミングコンテストの問題に慣れていない方は、AtCoder Beginners Selection の問題をいくつか解いてみることをおすすめします。
- C++入門 AtCoder Programming Guide for beginners (APG4b) は、競技プログラミングのための C++ 入門用コンテンツです。
- Python入門 AtCoder Programming Guide for beginners (APG4bPython) は、競技プログラミングのための Python 入門用コンテンツです。
異なる種類のお菓子を同じ箱に入れることはできないため、種類ごとに必要な箱の個数を求め、その合計が答えとなります。
\(X\) 個のお菓子を入れるために必要な箱の個数は、\(X/K\) の切り上げになります。この計算は小数の切り上げを行う関数 ceil などを用いて計算することができます。
なお、 \(X,K\) がともに正整数であるとき、\(X/K\) の切り上げは、\((X+K-1)/K\) の切り捨てと等しくなります。多くのプログラミング言語では、結果が正となる整数同士の除算は切り捨てとなるため、これにより整数のみを用いて誤差なく計算することができます。
(今回の制約では 64 bit 浮動小数点数を用いても、自然な実装では誤差が出ることがありません)
言語によってはオーバーフローに注意してください。
実装例 (C++)
#include<bits/stdc++.h>
using namespace std;
int main(){
int n, k;
cin >> n >> k;
long long ans = 0;
for(int i=0; i<n; i++){
int a, b;
cin >> a >> b;
ans += ((long long) a + b + k - 1) / k;
}
cout << ans << endl;
}
実装例 (Python)
N, K = map(int, input().split())
ans = 0
for _ in range(N):
a, b = map(int, input().split())
ans += (a + b + K - 1) // K
print(ans)
投稿日時:
最終更新:
