Trạng thái

Biết rằng \((a\ *\ b) \bmod c = ((a \bmod c)\ *\ (b \bmod c))\ \bmod c\)

Ví dụ: \((10\ *\ 3) \bmod 4 = 2\)\(((10 \bmod 4)\ *\ (3 \bmod 4)) \bmod 4 = 6 \bmod 4 = 2;\) trong khi đó giới hạn biểu diễn của long long là cỡ \(18\) chữ số, hãy tính \((a\ *\ b) \bmod c\) khi mà tích \((a\ *\ b)\) có thể vượt quá khả năng biểu diễn của long long trong \(C++.\)

Trong bài này, số \(c\) có thể lên đến \(10^{18}\), đây là một điều khá tệ vì sau khi \(\bmod\) xong, ta nhân lại vẫn có thể tràn số. Để khắc phục điều này, bạn hãy tìm hiểu về phép nhân Ấn độ, hoặc bạn liên hệ Mr Toàn để có một trick khá hay cho phép toán này nhé!

Yêu cầu

Tính \((a\ *\ b) \bmod c\)

Dữ liệu

  • Dòng 1 chứa 2 số nguyên dương \(a\)\(b\) (\(a,b \leq 10^{18}\));

  • Dòng 2 ghi số nguyên dương \(c\) (\(c \leq 10^{18}\)).

Kết quả

In ra kết quả của \((a\ *\ b) \bmod c.\)

Ví dụ

INPUT OUTPUT
473533207341277217 661950249426733688
47834567961336203
20568985178261806
Thông tin
Thông tin bài tập
Gửi bài giải
Điểm
50
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
125 M
I/O
stdin -> stdout
Tác giả
Loại đề bài
Toán: Số học
Ngôn ngữ cho phép
C, C#, C++, Java, Pascal, Python, Text