今回も yukicoder の問題紹介・解説を行っていきたいと思います!
$4$ 問目に紹介する問題はこちら!
概要
問題 : No.485 方程式のお勉強
レベル : ★
実行時間制限 : 2000 ms
問題文へのリンク↓↓
問題文
九郎くんは、方程式を解くことにハマりはじめています。
今日は $Ax = B$ 型の方程式をたくさん解きます。
九郎くんは学校で小数や分数を習っていないので、解 $x$ が整数にならない場合には、問題を解くことが出来ません。
家庭教師のあなたの仕事は、九郎くんが問題を解く前に答えを作ることです。
九郎くんが解ける問題ならば解 $x$ を、解けない問題ならば "NO" を出力して下さい。
制約
- $-100 \leq A \leq -1$ または $1 \leq A \leq 100$
- $-100 \leq B \leq -1$ または $1 \leq B \leq 100$
- A, B は整数
出力
$Ax = B$ の解 $x$ が整数になる時は解 $x$ を、そうでない場合は "NO" を出力して下さい。
最後に改行してください。
サンプル
サンプル1
3 12
4
$3 \times x = 12$ となる $x$ は $4$ です。
$4$ は整数なので、九郎くんが解ける問題です。
サンプル2
7 10
NO
九郎くんが解けない問題です。
解説
ここから解説を行っていきます。
自力で解いて見たい方はここで一旦止めてください!
解が存在する場合を考える
解が存在する場合を考えます。
まず $A \neq 0$ であれば、方程式の両辺を A で割ることができます。
Ax = B \\
x = \frac{B}{A}
今回は制約が優しく A, B どちらも $0$ の場合が除かれているのでこの式変形はどんな入力に対しても行うことができます。
次に整数解かどうかを判定します。整数解であるとは、 B を A で割った余りが $0$ であることです。
この場合、 $x$ を整数で表すことができます。
そうでない場合は整数解は存在せず、答えは "NO" となります。
したがって、このような構築を考えることでこの問題を解くことが出来ました。
ACコード
a, b = map(int, input().split())
if b % a == 0:
print(b // a)
else:
print('NO')
最後に
最後まで読んできただきありがとうございました!
yukicoder は ★1 でもコーナーケースがある問題が多かったりして良い対策になる気がします。
今後もどんどん記事書いていきます!
リクエストなどがあればぜひ声かけて下さい!ありがとうございました!