【编程习题★★☆☆☆】指数结果取后三位

问题:求整数3的33次方的后三位。

难度:★★☆☆☆

分析:定义long类型也无法装下这么大的结果。考虑3在计算乘法时,结果的低位只对高位有进位的影响,所以我们可以舍去结果的前n位,因为记录他们是多余的。

算法:每一次循环使用上一次结果*3,然后截取后3位作为本轮结果,反复循环即可求解。

参考JAVA代码:

public class BigPower {
	private int base;
	private int power;
	private int capturedigital = 1;
	
	public BigPower(int base, int power, int digital){
		this.base = base;
		this.power = power;
		for(int i = 0; i < digital; i++){
			this.capturedigital *= 10;
		}
		System.out.print(this.getResult(power));
	}
	
	private int getResult(int power){
		for(int i = 0; i < power; i++){
			base *= base;
			base = base - (base / capturedigital) *capturedigital;
		}
		return base;
	}
}
base是底数,power为指数,digital为截取位数,capturedigital为每轮截取结果。



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值