問題
問題文
高橋君は、全 $N$ ページから成る書類を両面印刷します。両面印刷では、$1$ 枚の紙に $2$ ページ分のデータを印刷することが出来ます。
最小で何枚の紙が必要か求めてください。
制約
・$N$ は整数
・$1 \le N \le 100$
収録されている問題セット
回答
回答1 (AC)
$N$ が偶数ならば印刷するページ数は半分の $\frac{N}{2}$ ページです。また、$N$ が奇数ならば印刷するページ数は $\frac{N+1}{2}$ ページになります。これを素直にコードにしてACとなりました。
abc157a-1.cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
if ( n%2==0 ) {
cout << n/2 << endl;
} else {
cout << (n+1)/2 << endl;
}
}
回答2 (AC)
$N$ が偶数ならば $N+1$ を2で割った商は $\frac{N}{2}$ と等しくなるので、$N$ が偶数でも奇数でも印刷するページ数は (C++の式として) $(N+1)/2$ ページになります。このことをコードにすると以下のようになりました。if 文が不要になるため、とてもシンプルなコードです。
abc157a-2.cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
cout << (n+1)/2 << endl;
}
調べたこと
AtCoder の解説 → ユーザ解説
回答2と同じ方針でした。
AtCoder の解説 → コンテスト全体の解説
回答2と同じ方針でした。最初から回答2を思いつく必要があるのでしょう。
リンク
前後の記事
- 前の記事 → AtCoderログ:0004 - ABC 088 A
- 次の記事 → AtCoderログ:0006 - ABC 208 に参加しました