1. 程式人生 > >迅雷校招------2的N次方

迅雷校招------2的N次方

對於一個整數N(512 <= N <= 1024),計算2的N次方並在螢幕顯示十進位制結果。

輸入描述:

輸入一個整數N(512 <= N <= 1024)

輸出描述:

2的N次方的十進位制結果

示例1

輸入

512

輸出

13407807929942597099574024998205846127479365820592393377723561443721764030073546976801874298166903427690031858186486050853753882811946569946433649006084096

題目連結:https://www.nowcoder.com/questionTerminal/e9a4919b8848451d9aff81e3cdd133b1

類似於大數乘除,我接下來就總結一下大數乘除

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;

string Nof2(int n)
{
    string res("1");
    int c=0;//進位
    for(int i=0;i<n;i++)
    {
        for(int j=res.length()-1;j>=0;j--)
        {
            int tmp=((res[j]-'0')<<1)+c;
            c=tmp/10;
            res[j]=tmp%10+'0';
        }
        if(c>0)
        {
            res.insert(res.begin(),c+'0');
            c=0;//進位以後,c標誌清 000
        }
    }

    return res;
}
int main()
{

   int n;
   while(cin>>n)
   cout<<Nof2(n)<<endl;
    return 0;
}

程式執行結果如下: