(Java) 演算法題:2的N次方
題目描述
原題連結
2的N次方
對於一個整數N(512 <= N <= 1024),計算2的N次方並在螢幕顯示十進位制結果。
輸入描述:
輸入一個整數N(512 <= N <= 1024)
輸出描述:
2的N次方的十進位制結果
輸入例子1:
512
輸出例子1:
13407807929942597099574024998205846127479365820592393377723561443721764030073546976801874298166903427690031858186486050853753882811946569946433649006084096
思路
考察大數乘法。大數一般聯想到字串。但是字串不方便修改值,因此採用StringBuilder來表示大數。
迴圈n次進行X2操作,每次操作需要將StringBuilder中的字元依次取出X2並處理進位。
時間複雜度O(n^2)
程式碼
public class PowOf2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
System.out.println(pow2(n));
}
private static String pow2(int n) {
StringBuilder res = new StringBuilder( "1" );
// 重複N次
for (int i = 0; i < n; i++) {
// 進位標誌,每輪清零
int temp = 0;
// result中的字元,從前往後逐位*2
for (int j = res.length() -1; j >= 0; j--) {
// 乘法運算,需要加上進位
temp = ((res.charAt(j) - '0') <<1) + temp / 10 ;
// 替換此位結果
res.setCharAt(j, (char)(temp%10 + '0')) ;
}
// 產生進位則需新增新的數字
if (temp/10 >= 1)
res.insert(0,'1') ;
}
return res.toString();
}
}
相關文章
- 【c語言】判斷一個數是不是2的n次方C語言
- java 既然出現double型別×2的n次方的時候計算結果出現偏差Java型別
- 為什麼 HashMap 的容量大小要設定為2的N次方?HashMap
- O(n^2)的排序演算法排序演算法
- [靈性程式設計]這想要那也想要的需求解決,2^ n次方列舉法程式設計
- leetcode演算法題解(Java版)-9-N皇后問題LeetCode演算法Java
- 從面試題中學演算法(2)---求陣列中唯一n個出現1次的數字(n=1,2,3)面試題演算法陣列
- 求1+2+...+n(Java實現)Java
- 為什麼分庫分表使用2的N次方 一個位元組用兩位16進位制
- 【演算法詳解】求解數值的整數次方演算法
- [2]十道演算法題【Java實現】演算法Java
- 生成{1,2,...,n}的排列的演算法-組合數學演算法
- 時間複雜度為 O (n^2) 的排序演算法時間複雜度排序演算法
- 時間複雜度為 O(n^2) 的排序演算法時間複雜度排序演算法
- Python退火演算法在高次方程的應用Python演算法
- [Java] 藍橋杯ADV-185 演算法提高 五次方數Java演算法
- 【原創】生成n*n蛇形矩陣的演算法矩陣演算法
- java演算法題Java演算法
- Java演算法面試題(005) 求n邊形周長的k等分點座標(今日頭條)Java演算法面試題
- 劍指offer面試題11 數值的整數次方面試題
- 計算2的N次冪n 可輸入,n為自然數
- c語言實現輸出2的1000次方C語言
- VARCHAR2(N CHAR)與VARCHAR2(N)的區別[Oracle基礎]Oracle
- SQL0286N.DB2表空間的pagesize問題SQLDB2
- 經典n皇后問題java程式碼實現Java
- 演算法:N皇后二演算法
- 演算法學習記錄十(C++)--->數值的整數次方演算法C++
- Java在演算法題中的輸入問題Java演算法
- char(n)和varchar2(n)區別
- 按字典序生成{1,2,...,n}的r子集的演算法-組合數學演算法
- Java實現:排序演算法--時間複雜度為O(n² )Java排序演算法時間複雜度
- N皇后問題
- 使用回溯演算法解決N皇后問題以及間隔排列問題演算法
- 演算法 1~n中1的次數演算法
- 計算2..n的素數
- 編寫程式實現 f(n)=f(n-1)+f(n-2) (f(1)=1 和 f(2)=2 )函式。函式
- 第二關係式:一元2,3,4次方
- JAVA上加密演算法的實現用例(2)Java加密演算法