64位整数乘法

求 a 乘 b 对 p 取模的值。

输入格式

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

输出格式

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

数据范围

1≤a,b,p≤10^18

输入样例:

3
4
5

输出样例:

2
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a,b,p;

ll mul(ll a,ll b,ll p){
	ll ans=0;
	for(;b;b>>=1){
		if(b&1) ans=(ans+a)%p;
		a=a*2%p;
	}
	return ans;
}

int main(){
	scanf("%lld%lld%lld",&a,&b,&p);
	printf("%lld\n",mul(a,b,p));
	
	return 0;
}

  



posted @ 2019-05-09 20:49  Hier001  阅读(132)  评论(0)    收藏  举报