[AtCoder]ABC 107A – Train ~ 109[C++]

プログラミング

ABCの過去問 107A – Train、ABC 108A – PairをC++で解いていきます。

ABC 107A – Train

問題

N両編成の列車があります。 この列車の前からi両目は、後ろから何両目でしょうか?

自分の回答

#include <bits/stdc++.h>
using namespace std;
 
int main() {
  int n, i;
  cin >> n >> i;

  cout << n - i + 1 << endl;
}

n-iに1を足したものが答えとなります。

ABC 108A – Pair

問題

1以上K以下の正の整数から、偶数と奇数ひとつずつの組を選ぶ方法の個数を求めてください。なお、選ぶ順番は考慮しません。

自分の回答

#include <bits/stdc++.h>
using namespace std;
 
int main() {
  int k;
  cin >> k;

  // 与えられた値の偶数の数の個数を求める
  int even = k / 2;
  
  // 偶数か奇数かで場合わけ
  if (k % 2 == 0){
    cout << even * even << endl;
  }else {
    cout << even * (even + 1) << endl;
  }
}

まずは、与えられた値kの偶数の個数を求めます。変数evenがそれに値します。
次にkが偶数か奇数で場合わけをします。偶数の場合はevenを二乗して、奇数の場合は、even+1をしてevenにかけます。なぜなら、kが奇数の場合、偶数の個数より、奇数の個数が一個多くなるからです。


k=6の場合
偶数の数の個数は
even = k / 2 = 3 (2,4,6)
となり、奇数は(1,3,5)となるので、3*3で答えは9となります。
k=9の場合
偶数の数の個数は
even = k / 2 = 4 (2,4,6,8)
となり、奇数は(1,3,5,7,9)となるので、4*5で答えは20となります。

ABC 109A – ABC333

問題

1以上3以下の整数 A,Bが与えられます。
A×B×Cが奇数となるような1以上3以下の整数Cが存在するか判定してください。

自分の回答

#include <bits/stdc++.h>
using namespace std;
 
int main() {
  int a, b;
  cin >> a >> b;

  if ((a % 2 != 0) && (b % 2 != 0)) {
    cout << "Yes" << endl;
  }else {
    cout << "No" << endl;
  }
}

A×B×Cが奇数になる条件としては、A,B,Cが全て、奇数である必要があります。Cは1以上3以下の整数なので、1でも3どちらでもよくて、与えられた値A,Bが奇数かどうかを確かめればいいですね。
A,Bがどちらも奇数の場合は、”Yes”をどちらかもしくはどちらも偶数の場合”No”となります。

タイトルとURLをコピーしました