1009——精确计算2的N次方
2016-03-21 22:33
453 查看
题目:100<=N<=1000,输入N,输出2^N的精确值
示例:
输入:200
输出:1606938044258990275541962092341162602522202993782792835301376
示例:
输入: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; } }
相关文章推荐
- Delphi中类的运行期TypeInfo信息结构说明
- ExtJs布局之BOX
- PHP面向对象的继承
- SEO艺术阅读笔记
- Openssl pkcs7命令
- 浏览器兼容性改造过程中遇到的问题
- Linux Mysql安装问题
- 设计模式文章(二)
- 第三百五十四天 how can I 坚持
- 编码用命令行执行的C语言词语统计程序
- Camera360编辑SDK 接入指南(Android)
- xcode6 下 ios simulator 有 Home 键
- Python Challenge 11
- 图数据集格式转换
- 设计模式文章(一)
- Android应用程序安装原理小结
- android 文件关联 mimeType
- Spiral Matrix
- WMI Backdoor
- 我的vim配置文件