🖥️
AtCoderの問題をRustで解いてみる (ネタバレ注意) #3
EX3. 計算問題
こんにちは、竹薮林です。今日はこちらの問題を解いていきましょう。
↓前回はこちら↓
問題文
Aくんは1から100までの和を求めようと思いました。
数学の授業で習ったとおり、1から100までの和は次の式で求められます。
この式の値を出力してください。
サンプルプログラム
次のプログラムをコピー&ペーストした後、コメント/* */を消して式を書いてください。
fn main() {
println!("{}", /* ここにプログラムを追記 */);
}
解いていく
それではこちらの問題を解いてみましょう。
Rustの演算の基本
Rustでは基本的には次の演算を行うことができます。通常、計算は左から行われますが、かけ算、割り算、あまりが先に計算されることに注意しましょう。
- 足し算:
+
- 引き算:
-
- かけ算:
*
- 割り算 (切り捨て):
/
- 割り算のあまりを求める:
%
また、()
で囲むことによってその計算の優先順位を上げることができます。
基本的な計算はC++などと変わりません。
答えを考える
それでは、これらを利用して計算をしましょう。
計算式は次のように表すことができます。
100 * (100 + 1) / 2
順を追って説明しましょう。まず、100
と100 + 1
をかけましょう。ここで、足し算を先に計算させるために100 + 1
は()
で囲んでおきます。そして、最後に2
で割りましょう。ここで、
失敗例
1 / 2 * 100 * (100 + 1)
としてはいけません。割り算は切り捨てで行われるため、1 / 2 = 0
となってしまうからです。
よって書くコードは次のようになります。
fn main() {
println!("{}", 100 * (100 + 1) / 2);
}
それではこちらを提出しましょう。こちらでAC
することができます。
今回はRustの基本的な演算を学習しました。
次回は EX4. ◯年は何秒? です。
最後まで読んでいただきありがとうございました。
Discussion