AtCoder Beginner Contest 183 (A, B のみ)
久しぶりすぎてはてな記法を忘れました.u-shoです.
調べていたら数式を書けるようになりました.進歩!
AtCoder Beginner Contest 183 - AtCoder に参加したので少し書こうと思います.
A - ReLU
問題概要
次のような関数 があります.
が入力として与えられるので を出力します.解法
関数は なら x, なら 0 を返すので,次のようにも書けますね.
なのでプログラムはこんな感じです.
#include <iostream> int main(){ int x; std::cin >> x; std::cout << std::max(x, 0) << "\n"; return 0; }
B - Billiards
問題概要
点 と点 があります ().
軸で反射させて,点 から点 にボールを通過させるには, 軸のどこを狙えばいいでしょう?
解法
軸で反射させて,点 から点 にボールを通過させるには,点 から点 を結ぶ直線の 切片を狙えばいいですね.
なので,点 から 軸方向に だけ移動したところです.
符号と出力桁数と精度に気をつけて
#include <bits/stdc++.h int main() { using namespace std; long double Sx, Sy, Gx, Gy; cin >> Sx >> Sy >> Gx >> Gy; cout << fixed << setprecision(10) << Sx + (Gx-Sx) / (Gy + Sy) * Sy << "\n"; return 0; }
なお,適切に式変形することで とできます
あとがき
久々に書いて疲れたのでこの辺で終わります.ごめんにゃ