2的N次方-迅雷校招

[编程题] 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;
}
点赞