文章

3

粉丝

51

获赞

0

访问

1.4k

头像
幂次方 题解:
P1017 贵州大学机试题
发布于2024年5月29日 19:03
阅读数 435

(a * b) % mod = (a % mod) * (b % mod) % mod

12 = 1100(二进制)

假设 x^n 为所求, n = 110010 = 100000 + 010000 + 000010, 对于 000001, 每加倍一次,1左移一位,所以只需要知道n的二进制表示位情况即可

#include <iostream>
#include <cstdio>

#define int long long
using namespace std;
const int mod = 233333;

int x, n;


signed main(){
	cin >> x >> n;
	int p = x;
	int ans = 1;
	for(int i = 0; i < 30; i ++){
		if((n >> i) & 1){
			ans = ans * p % mod;
		}
		p = (p % mod * p % mod) % mod;
	}
	cout << ans << endl;
}
	

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发