文章

11

粉丝

27

获赞

19

访问

1.2k

头像
疑问:对幂指数进行n%(MOD-1)的操作的原理是什么
P2015 上海交通大学机试题
发布于2025年1月24日 16:55
阅读数 95

佬们能不能 解答一下,对幂指数进行n%(MOD-1)的操作的原理是什么啊?

 

//2015涂颜色
#include<bits/stdc++.h> 
using namespace std;

const int MOD=1000000007;

int main(){
	string n,m;
	while(cin>>n>>m){
		//第一步:先对n进行n%(MOD-1)的操作,为什么???
		//知识点:字符串取模运算
		int lena=n.length();
		long long int num=0;
		for(int i=0;i<lena;i++){
			num=num*10+n[i]-'0';
			num=num%(MOD-1);
		} 
		//第二步:用快速幂算法计算(2^num)%MOD
		long long int ans=1;
		long long int dishu=2;        //dishu要用long long int型,用int型会出错 
		while(num!=0){
			if(num%2==1) ans=(ans*dishu)%MOD;    //如果是奇数,消耗掉一次幂运算 
			num=num/2;
//				ans=(ans%MOD)*(ans%MOD);             //注意这里不是结果ans自乘,而是底数自乘。
			dishu=(dishu*dishu)%MOD; 
		}
	ans=ans%MOD;
	cout<<ans<<endl;
	}
} 

 

登录查看完整内容


登录后发布评论

2 条评论
admin SVIP
2025年1月24日 17:36

机试攻略满分篇,4.3节有讲,费马小定理

赞(0)

123456608 : 回复 admin: 感谢!!

2025年1月24日 18:45