見出し画像

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問題だったと思います。

この記事が気に入ったらサポートをしてみませんか?