诶,我怎么没想到把一个数分解成二进制,再用二进制化十进制的方法相加,那不就等于一个数乘以多个数了嘛,就不会越界了,,,还傻乎乎的开平方找约数。。。。
#include <iostream>
#include <cmath>
using namespace std;
typedef long long ll;
ll x,y,mod;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
while(cin >> x >> y >> mod){
ll ans = 0;
while(y>0){
if(y&1) ans = (ans + x)%mod;
x = x*2%mod;
y = y>>1;
}
cout << ans << endl;
}
return 0;
}