计算2的N次方
时间限制: 1000ms内存限制: 65536kB
描述
任意给定一个正整数N(N<=100),计算2的N次方的值。
输入
输入只有一个正整数N。
输出
输出2的N次方的值。
样例输入
5
样例输出
32
描述
任意给定一个正整数N(N<=100),计算2的N次方的值。
输入
输入只有一个正整数N。
输出
输出2的N次方的值。
样例输入
5
样例输出
32
其实这道题用简单的方法也可以做出来,可是应该还有高效的方法。
哦,看了一下觉得蛮有趣的, 后来我想到的一个-,不知道高不高效,起码给力:
思想:首先我们要明白 一个long类型 一般情况下 是有64位的(不同平台会有所不同)
因此 一个long类型 可以表示 2^64 范围,题目中 N<100
所以我们需要两个long 类型 我们假设分别为 long numH[2];
我们使他们都为0 即为num[0]=0; num[1]=0;
我们用以为来实现我们要实行的功能
即有
void pinfang(int N,long num[])
{
num[0]=0;
num[1]=0;
if(N>64)
{
num[0]=1;
num[0]=num[0]<<(N-64);
}
else
{
num[1]=1;
num[1]=num[1]<<N;
}
}
这样 num[0]代表高位,num[1]代表低位。