博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
5200 fqy的难题----2的疯狂幂
阅读量:6963 次
发布时间:2019-06-27

本文共 1331 字,大约阅读时间需要 4 分钟。

5200 fqy的难题----2的疯狂幂

 

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 钻石 Diamond
 查看运行结果
 
 
题目描述 
Description

大家都一定知道2的幂吧!

输入一个n,输出2的n次方

 

输入描述 
Input Description

输入一个整数n,表示要求出2的n次方

输出描述 
Output Description

只有一个整数,为2的n次方

样例输入 
Sample Input

样例输入1:

6

 

样例输入2:

100

样例输出 
Sample Output

样例输出1:

64

 

样例输出2:

1267650600228229401496703205376

 

数据范围及提示 
Data Size & Hint

对于20%的数据,n<=50

对于50%的数据,n<=1500

对于100%的数据,n<=50000

分类标签 Tags 

 
暂无标签
题解:
快速幂(递归版)+高精度乘法
~~非递归的暂时没搞出来
AC代码:
#include
#include
#define ll long longusing namespace std;const int N=1e5+10;int num[N]={
1,1};void MUL(int a[],int b[]){ int c[N]={
0}; int l1=a[0]; for(int i=1;i<=l1;i++){ int x=0; for(int j=1;j<=l1;j++){ c[i+j-1]+=a[i]*b[j]+x; x=c[i+j-1]/10; c[i+j-1]%=10; } c[i+l1]=x; } int j=l1<<1; while(j>1&&!c[j]) j--; for(int i=1;i<=j;i++) a[i]=c[i]; a[0]=j;}void mul(int a[]){ int &l=a[0]; for(int i=1;i<=l;i++) a[i]<<=1; for(int i=1;i<=l;i++) a[i+1]+=a[i]/10,a[i]%=10; if(a[l+1]) l++;}void fpow(int p){ if(!p) return ; fpow(p>>1); MUL(num,num); if(p&1) mul(num);}int main(){ int n;cin>>n; fpow(n); for(int i=num[0];i;i--) printf("%d",num[i]); return 0;}

 

 

转载于:https://www.cnblogs.com/shenben/p/5924891.html

你可能感兴趣的文章
Layer中自定义属性的动画
查看>>
网络传输基础
查看>>
BZOJ-1225-[HNOI2001] 求正整数
查看>>
第2章 shell的语法
查看>>
read和readFully的区别! .
查看>>
doGet() throws NamingException报错
查看>>
ch12 GUI
查看>>
python爬虫知识点总结(十三)使用代理处理反扒抓取微信文章
查看>>
白盒测试
查看>>
单调队列及其应用
查看>>
【2012 - 百度之星资格赛 - D:共同狂欢】
查看>>
【hdu - 1014】
查看>>
软件评测师笔记_软件质量管理基础20161022
查看>>
(转)pdf文件结构
查看>>
Print Article HDU - 3507 -斜率优化DP
查看>>
为英文版Ubuntu11.04安装中文包以及中文输入法
查看>>
PO页面对象模式封装
查看>>
TCP连接的状态与关闭方式,及其对Server与Client的影响
查看>>
c++中const关键字的使用完整攻略
查看>>
关于前端本地压缩图片,兼容IOS/Android/PC且自动按需加载文件之lrz.bundle.js
查看>>