0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ABC058 ARC071 の問題を解いてみました

Posted at

A問題

if文で、$b-a = c-b$ かどうかを判定しましょう。

#include <bits/stdc++.h>
using namespace std;
//Created by karaju.

int main(void){
  int a, b, c;
  cin >> a >> b >> c;
  if(b - a == c - b){
    cout << "YES" << endl;
  }
  else{
    cout << "NO" << endl;
  }
}

B問題

奇数番目の文字と、偶数番目の文字を交互に出力すれば良いです。
ただ、奇数番目の文字を集めた文字列の方が長い場合があるので、それに対応する必要があります。

#include <bits/stdc++.h>
using namespace std;
//Created by karaju.

int main(void){
  string o, d;
  cin >> o >> d;
  for(int i = 0; i < o.size(); i++){
    cout << o[i];
    
    if(i >= d.size()) break; // o の方が長い場合を対処する
    
    cout << d[i];
  }
}

C問題

すべての文字列に含まれている文字を集めて出力します。

アルファベット26文字について、すべての文字列に含まれている個数だけその文字を出力することによって、この問題は解くことができます。

#include <bits/stdc++.h>
using namespace std;
//Created by karaju.

int main(void){
  int n;
  cin >> n;
  string s[n];
  for(int i = 0; i < n; i++) cin >> s[i];
  //受け取り完了
  
  for(char ch = 'a'; ch <= 'z'; ch++){ //すべての文字について試す
    int ans = 1e9; //とりあえず大きい数にしておく
    for(int i = 0; i < n; i++){
      int sum = 0;
      for(int j = 0; j < s[i].size(); j++){
        if(s[i][j] == ch) sum++; //ch という文字が出てきた回数を記録する
      }

      if(ans > sum) ans = sum;
      // すべての文字列に含まれている ch の数を記録しておく
    }
    
    for(int i = 0; i < ans; i++){
      cout << ch; //最小の ch の数 回出力する
    }
  }
}

D問題

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?