迅雷筆試C++A卷

[編程題]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 文件

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章