您的位置:首页 > 其它

1009——精确计算2的N次方

2016-03-21 22:33 453 查看
题目:100<=N<=1000,输入N,输出2^N的精确值

示例:

输入:200

输出:1606938044258990275541962092341162602522202993782792835301376

import java.util.Scanner;

public class Main {

int n;
int[] regs = new int[1000];

public static void main(String[] args) {
Main obj = new Main();
obj.getInput();
obj.checkInput(obj.n);
obj.computeNPowerOf2(obj.n);
obj.printNPowerOf2();
}

public void getInput() {
Scanner input = new Scanner(System.in);
n = input.nextInt();
input.close();
}

public void checkInput(int input) {
if (input < 100 || input > 1000) {
System.exit(1);
}
}

public void computeNPowerOf2(int n) {
final int TWO = 2;
final int TEN = 10;

regs[0] = TWO;
int highestIdx = 0;

for (int times = 1; times < n; times++) {

int carry = 0;
for (int idx = 0; idx <= highestIdx; idx++) {
regs[idx] = regs[idx] * TWO + carry;

if (regs[idx] >= TEN) {
regs[idx] -= TEN;
carry = 1;
if (highestIdx == idx) {
highestIdx++;
}
} else {
carry = 0;
}
}

}
}

public void printNPowerOf2() {
int start = skipUntilNonZero();
for (int i = start; i >= 0; i--) {
System.out.print(regs[i]);
}
System.out.println();
}

public int skipUntilNonZero() {
int i = regs.length - 1;
while (regs[i] == 0 && i >= 0) {
i--;
}
return i;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: