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番目の要素を取得して、返します。