[AtCoder]ABC 063A Restricted ~ 70[C++]

プログラミング

ABC 063A – Restricted

自分の回答

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

  if (a + b < 10){
    cout << a + b << endl;
  }else {
    cout << "error" << endl;
  }
}

a+b<10の時は、その値を、10以上の時は”error”を出力すればいいですね。

ABC 064A – RGB Cards

自分の回答

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

  int num = r * 100 + g * 10 + b;

  if (num % 4 == 0){
    cout << "YES" << endl;
  }else {
    cout << "NO" << endl;
  }
}

rは百の位、gは十の位、bは一の位なので、rに100、gに10を掛けて足し合わせれば三桁の数字がもとまります。その数字が4で割り切れるかどうかを確かめればいいですね。

もっとよくする

#include <bits/stdc++.h>
using namespace std;
 
int main() {
  int r, g, b;
  cin >> r >> g >> b;
 
  int num = g * 10 + b;
 
  if (num % 4 == 0){
    cout << "YES" << endl;
  }else {
    cout << "NO" << endl;
  }

他の方の答えをみたところ、百の位を計算していないバージョンがありました。rの値を使っていません。なるほど、4で割り切れるかどうかは、下二桁が4で割り切れるかどうかを確かめればいいのですね。

ABC 065A – Expired?

自分の回答

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

  if (b <= a){
    cout << "delicious" << endl;
  }else if (b <= a + x){
    cout << "safe" << endl;
  }else {
    cout << "dangerous" << endl;
  }
}

食べた日(b)が賞味期限(a)より小さかったら”delicious”、bが食べてもお腹を壊さない期間内(a+x)であれば、”safe”、それ以上は”dangerous”を出力すれば良いです。

ABC 066A – ringring

自分の回答

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

  vector<int> v{a,b,c};
  sort(v.begin(), v.end());
  cout << v[0] + v[1] <<endl;
}

久々の出番となるsortを使います。sortした後に、0番目と1番目を他して出力すればいいですね。

ABC 067A – Sharing Cookies

自分の回答

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

  if (a % 3 == 0 || b % 3 == 0 || (a + b) % 3 == 0){
    cout << "Possible" << endl;
  }
  else {
    cout << "Impossible" << endl;
  }
}

aまたはbまたはa+bが3で割り切れる時に、”Possible”を出力します。

ABC 068A – ABCxxx

自分の回答

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

  cout << "ABC" << n << endl;
}

文字列”ABC”の後にnをくっつけてあげればいいですね。

ABC 069A – K-City

自分の回答

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

  cout << (a - 1) * (b - 1) << endl;
}

入力された値から1を引いて掛け合わせたものが答えとなります。

ABC 070A – Palindromic Number

自分の回答

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

  reverse(n.begin(), n.end());
  if (n == n_origin){
    cout << "Yes" << endl;
  }else {
    cout << "No" << endl;
  }
}

reverse
標準ライブラリです。文字列を反転します。破壊的な関数であるため、
n = reverse(n.begin(), n.end());
という風にはできません。

もっとよくする

#include <bits/stdc++.h>
using namespace std;
 
int main() {
  string n; 
  cin >> n;
  
  if (n.at(0) == n.at(2)) {
    cout << "Yes" << endl;
  }else {
    cout << "No" << endl;
  }
}

問題文にnは三桁の数字という制限があるので、最初の数字と最後の数字が等しければ、回文になります。

at
a.at(n)でaのn番目の要素を取得して、返します。

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