最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

[Python] 2的N次方

互联网 admin 6浏览 0评论

[Python] 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(╥﹏╥)o

n = 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 = jbreak
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(╥﹏╥)o

OverflowError: range() result has too many items

[Python] 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(╥﹏╥)o

n = 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 = jbreak
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(╥﹏╥)o

OverflowError: range() result has too many items

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论