🖥️

AtCoderの問題をRustで解いてみる (ネタバレ注意) #3

2024/02/27に公開

EX3. 計算問題

こんにちは、竹薮林です。今日はこちらの問題を解いていきましょう。
↓前回はこちら↓
https://zenn.dev/banboo0427/articles/b8488b63025743

問題文

Aくんは1から100までの和を求めようと思いました。
数学の授業で習ったとおり、1から100までの和は次の式で求められます。

\frac{1}{2}\times100\times\left(100+1\right)

この式の値を出力してください。

サンプルプログラム

次のプログラムをコピー&ペーストした後、コメント/* */を消して式を書いてください。

fn main() {
    println!("{}", /* ここにプログラムを追記 */);
}

解いていく

それではこちらの問題を解いてみましょう。

Rustの演算の基本

Rustでは基本的には次の演算を行うことができます。通常、計算は左から行われますが、かけ算、割り算、あまりが先に計算されることに注意しましょう。

  • 足し算: +
  • 引き算: -
  • かけ算: *
  • 割り算 (切り捨て): /
  • 割り算のあまりを求める: %

また、()で囲むことによってその計算の優先順位を上げることができます。
基本的な計算はC++などと変わりません。

答えを考える

それでは、これらを利用して計算をしましょう。
計算式は次のように表すことができます。

100 * (100 + 1) / 2

順を追って説明しましょう。まず、100100 + 1をかけましょう。ここで、足し算を先に計算させるために100 + 1()で囲んでおきます。そして、最後に2で割りましょう。ここで、

失敗例
1 / 2 * 100 * (100 + 1)

としてはいけません。割り算は切り捨てで行われるため、1 / 2 = 0となってしまうからです。
よって書くコードは次のようになります。

fn main() {
    println!("{}", 100 * (100 + 1) / 2);
}

それではこちらを提出しましょう。こちらでACすることができます。

今回はRustの基本的な演算を学習しました。
次回は EX4. ◯年は何秒? です。
最後まで読んでいただきありがとうございました。

Discussion