题解 | 【模板】快速幂Ⅰ ‖ 模小整数

【模板】快速幂Ⅰ ‖ 模小整数

https://www.nowcoder.com/practice/3d624107a6904da1bd0e8c9c85e17167

这一题是快速幂的模板

大概思路就是,如果指数是奇数,那么res=(res*a)%p;

然后就a=(a*a)%p;

b=b/2;

一开始的res就要对p取模,这是为了防止p为1这种情况,当p为1时,任何数取模后都输出0;

要注意这几个地方都要取模,不然答案就可能出错


import java.util.Scanner;
public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in);
		int t=sc.nextInt();
		while(t-->0) {
			long a=sc.nextLong();
			long b=sc.nextLong();
			long p=sc.nextLong();
			System.out.println(f(a,b,p));
			
		}
		
		
	}
	public static long f(long a,long b,long p) {
		long res=1%p;
		a=a%p;
		while(b>0) {
			if(b%2==1) {
				res=(res*a)%p;
				b--;
			}
			a=(a*a)%p;
			b/=2;
		}
		return res;
		
		
	}

}

全部评论

相关推荐

找工作勤劳小蜜蜂:矛盾是没有实习,就是没实战经验,公司不想要,公司不要,你就没有实习,你就进入死循环,另外你的项目不是社会现在有大量岗位存在行业用的,云存储人员早就饱和。
点赞 评论 收藏
分享
牛马43373018...:这人真懂什么叫熵吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务