竞赛
考级
《左移和ll》
题目分析 求 2N2 ^ N2N,其中 NNN 最大为 606060 超出 int,需使用 long long。 如果使用 pow 函数在输出时需要转 long long,否则数字过大时会使用科学计数法输出。 AC代码 复杂度 O(n)O(n)O(n)
咳咳,直接进入主题 上代码!!!
有木有发现开long long会好用点呢…… 算了,直接来代码块吧
我们可以使用位运算<< 这个代表把一个数的二进制位整体向左移动n格 时间复杂度:O(1……?)O(1……?)O(1……?)
虽然直接1<<n也能做,但是我乐意快速幂
这道是可以用高精度做的
这里有些人会尝试乘数来表示次方,其实直接左移就行了
题解
#include<iostream> using namespace std; int main() { int a=2,b,i=1; long long d=2; cin>>b; if(b==0){ d=1; } else{ while(i<b) { d=d*a; i++; } } cout<<d; return 0; }
#include<iostream> #include<cmath> using namespace std; int main() { short n; cin>>n; unsigned long long s=pow(2,n); cout<<s; return 0; }
提交答案之后,这里将显示提交结果~