ABC209 A 解答
A - Counting(5)
問題
問題文
A 以上かつ B 以下の整数はいくつありますか?
制約
1 ≤ A ≤ 100
1 ≤ B ≤ 100
A, B は整数である。
考察
A 以上、 B 以下の数を求めます。シンプルな問題文ですね。AからBまでfor文を回してあげても求めることができますが、せっかくなので計算で求める方法を説明していきます。
説明すると言いましても、BからAを引くだけです。ただし、次の2点に注意です。
1)計算は植木算になる
A以上B以下ですので、B-Aとしてしまうと間違いです。この計算で求められるのはAからBの間にある隙間の数です。隙間を構成する数字はB-A+1となるので、+1を忘れないようにしましょう。
2)B < Aの場合
A以上B以下の個数を求めるのですが、問題文のどこを見ても「Bの方がAより大きい」なんて言葉は見つかりません。ですので、そのパターンは自分で処理しなければいけません。1)の結果が0より小さくなってしまったら、そんな数字は存在しないということですので、0を出力しましょう。
1)2)の結果を踏まえると次の式を出力すればACがもらえます。
max(0, B-A+1)
実装
#include<bits/stdc++.h>
#define rep(i,n) for(int i=0;i<n;++i)
#define reps(i,s,n) for(int i=s;i<n;++i)
using namespace std;
using ll = long long;
using P = pair<int, int>;
using T = tuple<int, int, int>;
int main()
{
int a, b;
cin >> a >> b;
cout << max(0, b - a + 1) << endl;
return 0;
}
あとがき
ちょっと注意が必要なA問題でした。簡単な計算を処理する過程でプログラムの入出力やmax関数を学んで、「0以上に注意しなきゃいけない」という数学的な要素もあって、非常にためになるA問題だったと思います。
この記事が気に入ったらサポートをしてみませんか?