关闭

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

183人阅读 评论(0) 收藏 举报
分类:

问题:求整数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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:7076次
    • 积分:262
    • 等级:
    • 排名:千里之外
    • 原创:19篇
    • 转载:0篇
    • 译文:1篇
    • 评论:0条