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

来源:互联网 发布:高性能笔记本 编程 编辑:程序博客网 时间:2024/06/11 06:49

题目: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;    }}
0 0
原创粉丝点击