1. paizaラーニングトップ
  2. レベルアップ問題集
  3. ユークリッドの互除法メニュー(言語選択)
  4. 問題一覧 Go編
  5. mod の演算 Go編

ユークリッドの互除法メニューのサムネイル
mod の演算 Go編(paizaランク C 相当)

問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!

問題

下記の問題をプログラミングしてみよう!

ある自然数 N について、整数を N で割った余りに注目した数式を合同式と言います。
整数 A を N で割った余りと、整数 B を N で割った余りが等しい場合、「N を法として a と b は合同である」といい a ≡ b(mod N)と表されます。

mod N での足し算・割り算・掛け算・累乗では次のような関係が成り立ちます。

a ≡ b(mod N) , c ≡ d(mod N) のとき

a + c ≡ b + d (mod N)
a - c ≡ b - d (mod N)
a × c ≡ b × d (mod N)
a ^ n ≡ b ^ n (mod N) (n は自然数)


演算子 cal と、自然数 N , 整数 A , B が与えられるので、
A[cal]B (mod N) を計算してください.

入力される値

N
A cal B


・1 行目では、法とする自然数 N が与えられます。
・2 行目では、整数 A , 行われる演算の演算子 cal , 整数 B が半角スペース区切りで与えられます。


入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。 標準入力からの値取得方法はこちらをご確認ください
期待する出力

・cal に対応した演算の答えを 0 以上 N 未満で 1 行で出力してください。
・また、出力の末尾には改行を入れてください。

条件

・1 ≦ N ≦ 100,000
・1 ≦ A , B ≦ 100,000
・cal は '+' , '-' , '*' , '^' のいずれかであり、それぞれ足し算・引き算・掛け算・累乗を表す。

入力例1

17
56 + 927

出力例1

14

入力例2

837
9282 * 10384

出力例2

390

問題一覧へ戻る

ページの先頭へ戻る