快速积**AcWing 90. 64位整数乘法

原题链接:https://www.acwing.com/problem/content/92/

求 a 乘 b 对 p 取模的值。

输入格式

第一行输入整数a,第二行输入整数b,第三行输入整数p

输出格式

输出一个整数,表示a*b mod p的值。

数据范围

1a,b,p10181≤a,b,p≤1018

输入样例:

3
4
5

输出样例:

2
快速积**
#include<iostream>
#include<cstdio>
#define ll long long
using namespace std;
int main(){
    ll a,b,p,res=0;
    scanf("%ld",&a);
    scanf("%ld",&b);
    scanf("%ld",&p);
    while(b){
        if(b&1) res=(res+a)%p;
        a=(a+a)%p;
        b>>=1;
    }
    printf("%ld\n",res);
    return 0;
}

 

 
posted @ 2020-10-29 09:13  莳曳  阅读(68)  评论(0)    收藏  举报