引き続き、AtCoderの過去問をC++で解いていきます。ABC 110A – Day of Takahashiから。
ABC 110A – Day of Takahashi
問題
あなたは子供にゲームをプレイさせ、その結果に応じてお小遣いをあげることにしました。
- 1以上9以下の整数1つが書かれた整数パネル3枚と
+
が書かれた演算子パネル1枚がある - これら4枚のパネルを横一列に並べてX+Yの形の数式を作る (すなわち、演算子パネルを端に置くことはできない)
- 数式を計算した結果と同じ値のお小遣いをあげる
ゲームで使用する各整数パネルの値A,B,Cが与えられるので、あげることになり得るお小遣いの最大値を求めてください。
自分の回答
#include <bits/stdc++.h>
using namespace std;
int main() {
int a, b, c;
cin >> a >> b >> c;
vector<int> n{a, b, c};
sort(n.begin(), n.end());
cout << n[2] * 10 + n[1] + n[0] << endl;
}
問題を噛み砕くと、与えられた3つの数字から2桁の数字と1桁の数字をそれぞれ作って、その二つを足すときの値が最大となるときの数字の組み合わせを考えればいいです。
考慮するのは、二桁の数字の十の位です。ここに、与えられた数字の中で一番大きい値をおきます。そして、十の位さえ決まって仕舞えば、一の位は残った数字どちらをおいても答えは変わりません。
ABC 111A – AtCoder Beginner Contest 999
問題
猫のすぬけは文字を書く練習をしています。 すぬけは今日、数字の 1
と 9
を書く練習をしていたのですが、 間違えて 1
と 9
をあべこべに書いてしまいました。
すぬけが書いた3桁の整数nが与えられます。nに含まれる 1
という桁をそれぞれ 9
に、 9
という桁をそれぞれ 1
に置き換えて得られる整数を出力してください。
自分の回答
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
cout << 1110 - n << endl;
}
気づくと実は簡単で、1110からnを引けば答えになります。
ABC 112A – Programming Education
問題
2020年, AtCoder社は年商10億円を超え, プログラミング教育にも手を出すようになった.
ある日行われたテストでは, 1才児はHello World
を出力するプログラムを, 2才児は整数 A, Bを入力してA+Bを出力するプログラムを書かなければならない.
高橋君はこのテストを受けているが, 突然自分が何才なのかが分からなくなってしまった.
そこで, 最初に自分の年齢N(Nは1または2) を入力し, N=1ならば Hello World
と出力し, N=2ならばA, Bを入力してA+Bを出力するプログラムを作ることにした.
高橋君に代わって, このようなプログラムを作りなさい.
自分の回答
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, a, b;
cin >> n >> a >> b;
if (n == 1){
cout << "Hello World" << endl;
}else {
cout << a + b << endl;
}
}
n=1の時は、”Hello World”をn=2の時はa+bを出力すればいいですね。
ABC 113A – Discount Fare
問題
A駅とB駅を結ぶ鉄道があり、運賃はX円です。
また、B駅とC駅を結ぶバスがあり、運賃はY円です。
joisinoお姉ちゃんは、A駅からB駅まで鉄道で移動し、B駅からC駅までバスで移動すると、バスの運賃が半額になる特別券を手に入れました。
この特別券を用いたとき、A駅からC駅まで移動するのにいくらかかるか求めてください。
自分の回答
#include <bits/stdc++.h>
using namespace std;
int main() {
int x, y;
cin >> x >> y;
cout << x + y / 2 << endl;
}
xとyを半分にして足し合わせればいいですね。
ABC 114A – 753
問題
七五三とは、7歳、5歳そして3歳の子どもの成長を祝うとある国の行事です。
いま、高橋くんはX歳です。今回の七五三で、高橋くんの成長は祝われるでしょうか?
自分の回答
#include <bits/stdc++.h>
using namespace std;
int main() {
int x;
cin >> x;
if (x == 3 || x == 5 || x == 7){
cout << "YES" << endl;
}else {
cout << "NO" << endl;
}
}
xが3,5,7の時は”YES”を出力すればいいですね。