2的n次方
[Python] 2的N次方
题目描述
对于一个整数N(512 <= N <= 1024),计算2的N次方并在屏幕显示十进制结果。
输入描述
输入一个整数N(512 <= N <= 1024)
输出描述
2的N次方的十进制结果
示例
输入
512
输出
13407807929942597099574024998205846127479365820592393377723561443721764030073546976801874298166903427690031858186486050853753882811946569946433649006084096
链接
链接: link.
思路1
python的暴力解法…直接进行N次方计算print 2**int(raw_input())
思路2
模拟乘法计算。以下代码仅供思路上的参考。因为,当N很大的时候,程序无法运行…
希望有大神指出应该如何优化 o(╥﹏╥)on = int(raw_input())
a = [int(0) for i in range(2**n)]
lon = len(a)
a[-1] = 1
flag = 0
k = 0
ans = []
while n>0:
for i in range(lon-1,-1,-1):
t = a[i] * 2 + flag # 保存结果
a[i] = t % 10 # 对数值进行更新,满十进一
flag = t / 10 # 进位标志
n -= 1
for j in range(lon):
if a[j] != 0:
k = j
break
for ii in range(k,lon):
ans.append(a[ii])
anss = int(''.join(Map(str,ans)))
print anss
以上代码存在一个问题,N的数值太大会报‘OverflowERROR’ ,所以只适用于N比较小的情况下(N为20的时候,程序的运行时间就达到了5s以上…)
o(╥﹏╥)oOverflowError: range() result has too many items
相关阅读
不少朋友觉得每次登录win10系统的时候都需要输入登录密码很麻烦,有没有win10取消登陆密码的方法呢?别着急,方法肯定是有的,下面小编就
详细介绍 Win8.1预览版下载正式发布,大家可以选择通过Windows Store应用更新或者下载Win8.1预览版镜像进行安装。微软已经面
阿里聚合直播盒子源码AlijuheCMS™2019版V1.0 for Android版本采用JAVA语言原生开发,运行流畅,模块化开发,APP前台由直播、小视频、
场景
初学SpringBoot,经常要在application.properties/yml中对某些导入的包进行初始化配置例如在mysql中,我们要配置url,username,p
办公人员必备知识~!用Word排版完成以后我们该做些什么事情呢?那当然是打印了,今天我们接着上次的《设置默认打印机》讲:在XP系统和Win