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

问题:求整数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为每轮截取结果。



阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mychaint/article/details/46801425
个人分类: 编程习题
上一篇【源代码】java.util.ArrayList
下一篇【中文分词】亲手开发一款中文分词器--前言
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭