[編程題]2的N次方
時間限制:1秒
空間限制:131072K
對於一個整數N(512 <= N <= 1024),計算2的N次方並在屏幕顯示十進制結果。
輸入描述:
輸入一個整數N(512 <= N <= 1024)
輸出描述:
2的N次方的十進制結果
輸入例子1:
512
輸出例子1:
13407807929942597099574024998205846127479365820592393377723561443721764030073546976801874298166903427690031858186486050853753882811946569946433649006084096
思路:用string來解決數據溢出的問題,設置兩個數來儲存當前位的值和進位的值,我當時寫的時候,沒注意左移符<<的優先度居然是最低的,導致結果錯誤,算是一個坑
// ConsoleApplication35.cpp : 此文件包含 "main" 函數。程序執行將在此處開始並結束。
//
#include <iostream>
#include <string.h>
using namespace std;
string GetNum(int num)
{
string new_num = "1";
for (int i = 0; i < num; i++)
{
int carry = 0, mult = 0;//carry 進位數,mult 當前位的新數字.
for (int j = new_num.size() - 1; j >= 0; j--)
{
mult = ((new_num[j] - '0') << 1) + carry;//左右移動的優先度最低
carry = mult / 10;
mult %= 10;
new_num[j] = mult + '0';
}
if (carry > 0)
new_num.insert(new_num.begin(), carry + '0');
}
return new_num;
}
int main()
{
int n;
cin >> n;
cout << GetNum(n)<<endl;
}
// 運行程序: Ctrl + F5 或調試 >“開始執行(不調試)”菜單
// 調試程序: F5 或調試 >“開始調試”菜單
// 入門使用技巧:
// 1. 使用解決方案資源管理器窗口添加/管理文件
// 2. 使用團隊資源管理器窗口連接到源代碼管理
// 3. 使用輸出窗口查看生成輸出和其他消息
// 4. 使用錯誤列表窗口查看錯誤
// 5. 轉到“項目”>“添加新項”以創建新的代碼文件,或轉到“項目”>“添加現有項”以將現有代碼文件添加到項目
// 6. 將來,若要再次打開此項目,請轉到“文件”>“打開”>“項目”並選擇 .sln 文件