OpenJudge 2809 计算2的N次方

时间:2023-03-09 00:14:16
OpenJudge 2809 计算2的N次方

1.链接地址:

http://bailian.openjudge.cn/practice/2809/

2.题目:

总时间限制:
1000ms
内存限制:
65536kB
描述
任意给定一个正整数N(N<=100),计算2的N次方的值。
输入
输入只有一个正整数N。
输出
输出2的N次方的值。
样例输入
5
样例输出
32
提示
高精度计算

3.思路:

数据较弱,直接利用高精度乘法计算即可

4.代码:

 #include <string>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm> using namespace std; string mul(string str1,string str2)
{
vector<int> v_res(str1.size()+str2.size(),);
string::size_type i,j;
vector<int>::size_type k,p; reverse(str1.begin(),str1.end());
reverse(str2.begin(),str2.end());
for(i = ; i != str1.size(); ++i)
{
for(j = ; j != str2.size(); ++j)
{
v_res[i+j] += (str1[i]-'') * (str2[j] - '');
}
}
for(k = ; k != v_res.size() - ; ++k)
{
v_res[k+] += v_res[k] / ;
v_res[k] = v_res[k] % ;
} for(p = v_res.size() - ; p != -; --p)
{
if(v_res[p] != ) break;
}
if(p == -) p = ; string s_res(p+,'');
for(k = p; k != -; --k) s_res[p-k] = char(v_res[k] + ''); return s_res; } int main()
{
int n;
cin>>n;
string res = ""; while(n--)
{
res = mul(res,"");
} cout<<res<<endl; return ;
}