算法题(二分法快速幂运算及取余)

题目

在这里插入图片描述

输入输出

在这里插入图片描述

样例

在这里插入图片描述

解题思路

1、 题目非常简单,这道题就是考二分法快速幂运算,因为这个题运算出来的数会非常大,而且编译时间长,所以不能用直接运算的方法。
2、 二分法详解
3、 每次把指数缩小成原来的一半,底数增大到原来的平方,判断指数的奇偶性,奇数就减一继续重复,这里就需要把刚才底数乘的数都乘起来,注意没一步都需要对要求的数取余,这样才不会使数值过大。这里用long,int过不去OJ系统。

参考代码

package Test;

import java.util.Scanner;

public class Test2f {
	public static void main(String[] args) {
		
		Scanner sc=new Scanner(System.in);
		int t=sc.nextInt();
		while(t-->0) {
		long sum=1;
		long x=sc.nextLong();
		long h=sc.nextLong();
		long m=sc.nextLong();

			while(h>0) {
				if(h%2==0) {
					x=x*x%m;
					h=h/2;
				
				}else {
					h=h-1;
					sum=sum*x%m;
					h=h/2;
					x=x*x%m;
				}
			}
			System.out.println(sum);
		}
	}
	
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值