Python中文
首页
教程
问答
标签
搜索
登录
注册
在不同的基础上对非常大的数字执行操作的最快方法
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我收到一个基于2^k的非常大的数字列表(k<;=30,数字量<;=10^7)。你知道吗</p> <p>我需要做的是得到两个数字(我们称它们为X和Y),减去它们(A=X-Y,B=Y-X),然后返回A和B的二进制表示</p> <p>我当前的代码如下所示:</p> <pre><code>k = int(input()) base = pow(2, k) numbersX = stdin.readline().split() digitsX = len(numbersA) - 1 x = 0 i = 1 while i <= digitsX: factor = pow(base, digitsX - i) x += int(numbersX[i]) * factor i += 1 </code></pre> <p>(与Y类似)</p> <p>我只是简单地把接收到的数字转换成小数,然后减法得到二进制表示。它能工作,但速度很慢。你能建议其他解决办法吗?你知道吗</p> <pre><code>Sample input: 4 (for k) 6 15 2 7 So X = 6 15 = 6*16^1 + 15*16^0 = 96 + 15 = 111 (decimal) Y = 2 7 = 2*16^1 + 7*16^0 = 32 + 7 = 39 (decimal) A = X – Y = 111 – 39 = 72 B = Y – X = 39 – 111 = -72 Output: 01001000 (A in SM binary) 10111000 (B in U2 binary) </code></pre>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>你可以消除<code>pow</code></p> <pre><code>x = 0 i = 1 while i <= digitsX: x *= base x += int(numbersX[i]) i += 1 </code></pre>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何添加虚拟方法
2 回答
如何添加表示整数的擦边字符串?
7 回答
如何添加要在Bokeh中使用的新font.ttf文件?
3 回答
如何添加要显示的矩阵XY轴编号和XY轴
1 回答
如何添加计数?
2 回答
如何添加计数器函数?
9 回答
如何添加计数器列来计算数据帧中另一列中的特定值?
4 回答
如何添加计数器来跟踪while循环中的月份和年份?
5 回答
如何添加计数并删除countplot的顶部和右侧脊椎?
6 回答
如何添加计时器wx.应用程序更新窗口对象的主循环?
9 回答
如何添加评论到帖子?PostDetailVew,Django 2.1.5
8 回答
如何添加评论拉梅尔亚姆
2 回答
如何添加诸如矩阵Python/Pandas之类的数据帧?
5 回答
如何添加谷歌地点自动完成到Flask?
1 回答
如何添加超时、python discord bot
7 回答
如何添加超过1dp的检查
6 回答
如何添加距离方法
7 回答
如何添加跟随游戏的敌人精灵
1 回答
如何添加路径以便python可以找到程序?
8 回答
如何添加身份验证/安全性以使用happybase访问HBase?
7 回答