A問題
TopCoDeer くんが、 AtCoDeer くんの正体を言い当てているかどうかを判定します。
つまりは、a,b が等しいかどうかを判定します。
#include <bits/stdc++.h>
using namespace std;
//Created by karaju.
int main(void){
char a, b;
cin >> a >> b;
if(a == b){ //正体を言い当てているなら
cout << "H" << endl;
}
else{
cout << "D" << endl;
}
}
B問題
- すでに連結の場合
- 一つ目の長方形の左に二つ目の長方形がある場合
- 一つ目の長方形の右に二つ目の長方形がある場合
という三つの場合について考えます。
一つ目の場合は、0 と出力すれば良いです。
二つ目の場合は、$一つ目の長方形の左端 - 二つ目の長方形の右端$ を出力すれば良いです。
3つ目の場合は、$二つ目の長方形の左端 - 一つ目の長方形の右端$ を出力すれば良いです。
#include <bits/stdc++.h>
using namespace std;
//Created by karaju.
int main(void){
int w, a, b;
cin >> w >> a >> b;
int a_right = a + w, b_right = b + w;
//a,bの右側の位置を求めておく
if(b_right < a){ // もし、a より b が左にあるなら
cout << a - b_right << endl;
}
else if(a_right < b){ //もし、b より a が左にあるなら
cout << b - a_right << endl;
}
else{ //すでに連結なら
cout << 0 << endl;
}
}
C問題
時刻$t$ には、 $\displaystyle\sum^{t}_{i = 0}i$ 以下の座標には辿り着くことが可能です。(1 ~ t の総和)
(細かく調整することができる)
なので、$\displaystyle\sum^{t}_{i = 0}i$ が初めて $X$ 以上になるときの i の値を出力すれば良いです。
#include <bits/stdc++.h>
using namespace std;
//Created by karaju.
int main(void){
int x;
cin >> x;
int a = 0;
for(int i = 1; true; i++){
a += i;
if(a >= x){
cout << i << endl;
return 0;
}
}
}
D問題