快速幂
内存限制: 128 MiB 时间限制: 1000 ms 标准输入输出 题目类型: 传统 评测方式: 文本比较
题目描述
我们通常把 a 的 b 次方记作 a ^ b,为了方便,我们经常直接使用 C++ 内置函数 pow ( a,b )来完成这个工作,但 a 的 b 次方就是把 a 垒乘 b 次,时间复杂度为 O ( b ),当 b 值很大时,将会耗去大量时间,所以请同学们不能再偷懒了,直接写一个快速幂函数记作 qkpow ( a,b )
本题需要你求出 2 的 n 次方 ( n < 63 )
输入格式
一个非负整数 n ( n < 63 )
输出格式
输出 2 ^ n 次方的结果
样例
样例输入
复制62
样例输出
复制4611686018427387904
数据范围与提示
请用快速幂来做
#include <bits/stdc++.h>
using namespace std;
long long n;
long long qkpow(long long a, long long b) {
if(b == 0) {
return 1;
}
if(b == 1) {
return a;
}
long long p = qkpow(a, b / 2);
if(b % 2 == 0) {
return p * p;
} else {
return a * p * p;
}
}
int main() {
scanf("%d", &n);
printf("%lld", qkpow(2, n));
return 0;
}
//开 long long 就不需要我多说了吧