Biết rằng (a * b)%c = ((a%c)*(b%c))%c, ví dụ: (10*3)%4 = 2 và (((10%4)*(3%4)))%4 = 6%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)%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 1018, đây là một điều khá tệ vì sau khi % 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)%c Input: - Dòng 1 chứa 2 số nguyên dương a và b (a,b<=10^18); - Dòng 2 ghi số nguyên dương c (c<=10^18). Output: (a * b)%c Ví dụ input 473533207341277217 661950249426733688 47834567961336203 output 20568985178261806

1 câu trả lời

#include<bits/stdc++.h>
using namespace std;
long long nhan(long long a, long long b, long long c)
{
    if (b == 0)
        return 0;

    long long T = nhan(a, b / 2, c) % c;

    if (b & 1)
        return ((T + T) % c + a % c) % c;
    else
        return (T + T) % c;
}
ll a , b ,c ;
int main()
{
 cin >> a >> b >> c;
 cout << nhan(a , b , c);
}

nhớ vote và xin hay nhất nha

Câu hỏi trong lớp Xem thêm

giup e voi I/ Supply the correct form of the verbs in brackets 1. You (think) ……………………… collecting stamps costs much money? 2. Every year, my mother (give) ……………………… me a nice doll on my birthday. 3. Jenny says she loves collecting pens but she (not/continue) ……………………… this hobby from next year. 4. If you wash your hands more, you (have)……………………. less chance of catching flu. 5. Getting plenty of rest is very good. It (help)…………………. you to avoid depression. 6. Mr. John (be) ……………………… principal of our school since last year. 7. I (see) ……………………… a car accident on this corner yesterday. 8. We like (come)……………………to school by bus, but we hate (stand)………………………. and (wait) …………………… in the rain. 9. ……………………… (you/ ever/ meet) anyone famous? 10. My mother (come) ……………………… to stay with us next weekend. 11. When he lived in Manchester, he (work) ……………………… in a bank. 12. We (be) ……………………… students for four years. 13. We are planting trees around our school now. Our school (be) ……………………… surrounded by a lot of green trees. 14. What ……………………… your father usually ……………………… (do) in the evenings? 15. My sister likes (cook) ……………………… very much. She can cook many good foods. 16. My father says when he's retired, he (go) …………………… back to his village to do the gardening. 17. They want (buy) ……………………… some meat for dinner. 18. Linh is my best friend. We (know) ……………………… each other for 5 years. 19. I enjoy (fish) ……………………… because it is relaxing. 20. How about (go) ……………………… to the movie theatre?

3 lượt xem
1 đáp án
23 giờ trước