[AtCoder]ABC 051A Haiku ~ 59[C++]

プログラミング

ABC 051A – Haiku

問題

イルカは、新年に長さ 19の文字列 sを受け取りました。
文字列 ss の形式は [英小文字 \(5\) 文字],[英小文字 \(7\) 文字],[英小文字 \(5\) 文字] で表されます。
イルカは、カンマで区切られた文字列 ss を、スペースで区切られた文字列に変換したいと思っています。
イルカの代わりに、この処理を行うプログラムを作ってください。

自分の回答

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

  regex e(",");
  cout << regex_replace(s, e, " ") << endl;
}

正規表現を用いるために新しい要素が出てきました。

regex
正規表現に関するクラス・関数を定義するヘッダです。この場合、カンマ(,)を検知しています。

regex_replace関数
regex_replace(文字列, 正規表現, 置き換える文字列)という形で使います。
文字列を正規表現を使って、置き換えた結果を取得することができます

ABC 052A – Two Rectangles

問題

二つの長方形があります。 一つ目の長方形は、縦の辺の長さがA、横の辺の長さがBです。 二つ目の長方形は、縦の辺の長さがC、横の辺の長さがDです。
この二つの長方形のうち、面積の大きい方の面積を出力してください。 なお、二つの長方形の面積が等しい時は、その面積を出力してください。

自分の回答

#include <bits/stdc++.h>
using namespace std;
 
int main() {
  int a, b, c, d;
  cin >> a >> b >> c >> d;
  int first_area = a * b;
  int second_area = c * d;
  
  if (first_area >= second_area){
    cout << first_area << endl;
  }
  else {
    cout << second_area << endl;
  }
}

if文の1個目の条件のところを>=と書いておくといいですね。

ABC 053A – ABC/ARC

問題

すめけくんは現在のレートが 1200未満ならば AtCoder Beginner Contest (ABC) に、そうでなければ AtCoder Regular Contest (ARC) に参加することにしました。 すめけくんの現在のレート xが与えられます。すめけくんが参加するコンテストが ABC ならば ABC と、そうでなければ ARC と出力してください。

自分の回答

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

  if (x < 1200){
    cout << "ABC" << endl;
  }
  else {
    cout << "ARC" << endl;
  }
}

xが1200未満なら”ABC”をそれ以外は”ARC”を出力すればいいですね。

ABC 054A – One Card Poker

問題

AliceとBobは、2人で1枚ポーカーを行います。
1枚ポーカーは、トランプを用いて行う2人ゲームです。

今回使用するトランプでは、各カードに 1 から 13 までの数が書かれています。
カードの強さは、カードに書かれている数で決まり,強さの基準は以下の通りです。
弱 2<<3<<4<<5<<6<<7<<8<<9<<10<<11<<12<<13<<1 強

自分の回答

#include <bits/stdc++.h>
using namespace std;
 
int main() {
  int a, b;
  cin >> a >> b;
 
  if (a == 1){
    a = 14;
  }
  if (b == 1){
    b = 14;
  }
 
  if (a > b){
    cout << "Alice" << endl;
  }
  else if (a < b){
    cout << "Bob" << endl;
  }
  else {
    cout << "Draw" << endl;
  }
}

aとbが1の時は、14に変換してから、aとbの大きさを比べて結果を出力してます。

ABC 055A – Restaurant

問題

すぬけくんはレストランに通うのが好きです。すぬけくん行きつけのレストランは何を食べても 1食 800で、15食食べる毎にその場で200円もらえます。

すぬけくんは今までで合計N食食べました。 今までに払った金額をx円、レストランからもらった金額をy円として、x−yを求めなさい。

自分の回答

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

  int survice = n / 15;
  int price = n * 800 - survice * 200;
  
  cout << price << endl;
}

survice = n / 15というところで、値引き量を求めています。

ABC 056A – Honest Or Dishonest

シカのAtCoDeerくんとTopCoDeerくんが「正直者か嘘つきか」ゲームをしています。 このゲームでは、正直者は常にほんとうのことを言い、嘘つきは常に嘘を言います。 文字aとbが入力として与えられます。これらはそれぞれ H か D のどちらかです。

a=H のとき、AtCoDeerくんは正直者です。a=D のとき、AtCoDeerくんは嘘つきです。b=H のとき、AtCoDeerくんは「TopCoDeerくんは正直者だ」と発言しています。b=D のとき、AtCoDeerくんは「TopCoDeerくんは嘘つきだ」と発言しています。

これらから判断して、TopCoDeerくんが正直者かどうか判定してください。

自分の回答

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

  if (a == b){
    cout << "H" << endl;
  }
  else {
    cout << "D" << endl;
  }
}

aとbが等しい時は”H”をaとbが異なる時は”D”を出力すれば良いですね。

ABC 057A – Remaining Time

イルカはプログラミングコンテスト好きで、今日はAtCoderのコンテストに参加します。
現在時刻は、24時間表記 (0:00〜23:59)で A時ちょうどであり、コンテストがちょうど B時間後に始まります。
コンテストの開始時刻は、24時間表記で何時ちょうどでしょうか?

自分の回答

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

  int time = a + b;
  cout << time % 24 << endl;
}

時刻は24で割った余りを出力するようにすると、24時間表記で出力できます。
例えば、25時になった場合、25%24=1となります。

ABC 058A – ι⊥l

3本の柱が等間隔に並んでいます。柱の高さは左から順に aメートル, bメートル, cメートル です。 柱の先端が同一直線上に並んでいる時、つまりb−a=c−bを満たしているとき、 この柱の並び方を美しいと呼びます。
柱の並び方が美しいかどうかを判定してください。

自分の回答

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

  if (b - a == c - b){
    cout << "YES" << endl;
  }
  else {
    cout << "NO" << endl;
  }
}

問題文の通り、b – a = c – bの時は”YES”、そうでない時は”NO”を出力すればいいですね。

ABC 059A – Three-letter acronym

問題

英小文字からなる3つの単語s1,s2,s3が空白区切りで与えられるので、単語の先頭の文字をつなげ、大文字にした略語を出力してください。

自分の回答

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

  cout << (char)toupper(a[0]) << (char)toupper(b[0]) << (char)toupper(c[0]) << endl;
}

大文字に変換するために新たな関数がでてきました。

toupper関数
文字を大文字化します。(char)をつけてあげないと数字になってしまいます。

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