题目描述
任意给定一个正整数N(N<=100),计算2的n次方的值。
输入
输入一个正整数N。
输出
输出2的N次方的值。
样例输入
10
样例输出
1024
分析
本质上是一道高精度乘法
先给个投机取巧的
#include<cmath>
#include<iostream>
using namespace std;
int main()
{
int n,m=0;
cin>>n;
cout<<pow(2,n);
return 0;
}
事实上,这个小程序就可以解决这道题,但要掌握这道题的知识点,必须看高精度的。
我们首先创建一个a数组,赋a[1]=1,a数组的长度l为1,需要注意的是由于是在程序内做的数组,会赋随机值,因此要来一个memset(a,0,sizeof(a));
int a[1005];
memset(a,0,sizeof(a));
a[1]=1;
int l=1,s,n;
然后弄一个循环,从1~n,再将1~l间的a[i]乘2,随后遍历,发现如果a[i]>9,那么a[i+1]+=a[i]/10,a[i]在mod 10,需要注意如果i+1>l,那么将l赋值为i+1,最后再输出就行了。
cin>>n;
for(int k=1;k<=n;k++){
for(int i=1;i<=