1009_2のN乗


2のN乗
時間制限(一般/Java) : 1000 MS/ 3000 MS          実行メモリ制限:65536 KByte総提出:2504           試験合格:1213 
試合の説明
プログラムは2のN乗を正確に計算します。(Nは100と1000の間の整数)です。
入力
正の整数N(100≦N≦1000)
出力
2のN乗
サンプル入力
200
サンプル出力
16069380 442589275541962092116262252222223782792835301376 6
タイトルソース
NUPT
本体は主に大きな数の処理を考慮しており、この結果はデータタイプの記憶範囲を超えている。
考え方:各ビットの数を配列で記憶します。
コードは以下の通りです
#include <iostream>
using namespace std;

int main()
{
	int N;
	cin >> N;
	if (N<100 || N>1000)
		return 0;
	int a[1001] = { 0 };
	a[1] = 1;										//    1
	int wshu = 1;								//       
	int jw;											//  
	for (int m = 1; m <= N; m++)
	{
		jw = 0;										//    
		for (int i = 1; i <= wshu; i++)
		{
			a[i] = 2 * a[i] + jw;
			jw = a[i] / 10;
			a[i] %= 10;
		}
		if (jw)
		{
			wshu++;
			a[wshu] = jw;
		}
	}
	for (int n = wshu; n > 0; n--)
		cout << a[n];
	cout << endl;
	return 0;
}