[编程题] 2的N次方
时间限制:1秒
空间限制:131072K
对于一个整数N(512 <= N <= 1024),计算2的N次方并在屏幕显示十进制结果。
输入描述:
输入一个整数N(512 <= N <= 1024)
输出描述:
2的N次方的十进制结果
输入例子1:
512
输出例子1:
1340780792994259709957402499820584612747936582059239337772356144372176403007354697680187429816 6903427690031858186486050853753882811946569946433649006084096
思路
- 用vector倒着存入每位数
- 1 存入vector
- n次循环,每次每个数组里的数*2
- 处理数组,有进位的进位,%10
- 倒过来输出
#include<algorithm>
#include<iostream>
#include<vector>
using namespace std;
vector<int> n;
int main()
{
int num;
auto it = n.begin();
while (cin >> num)
{
n.clear();
n.push_back(1);
for (int i = 0; i < num; i++)
{
for (it = n.begin(); it != n.end(); it++)
{
*it *= 2;//数组里每个数*2
}
for (int i = 0; i < n.size(); i++)//处理>10的数
{
if (n[i] >= 10)
{
if (i != n.size() - 1)
{
n[i + 1] += 1;
}
else
{
n.push_back(1);//n[i]*2最多18,所以是1
}
n[i] %= 10;
}
}
}
auto it2 = n.rbegin();
for (; it2 != n.rend(); it2++)
cout << *it2;
cout << endl;
}
return 0;
}