python高精度乘法_vijos - P1223麦森数 (高精度乘法 + 分治 + python) 港控/mmm° 2022-10-26 01:25 167阅读 0赞 十分简单,别想复杂了!^\_^ 这道题目,要用的只是点就一个,高精度乘法运算,如果是C++的话,请用分治的方法,而对于java以及python而言,只需要直接调用对于高精度计算的函数即可,此处用了python的pow 计算位数很简单,10^x + k = 2^p -1 -> log10(2^p - k - 1) == x - > int (log10(2) \* p) + 1 python代码: ![ec301e4be0cc4161ba0fdc649eb8db05.png][] \#!/usr/bin/env python3 \# -\*- coding: utf-8 -\*- import math import sys P = int(raw\_input()) print int(math.log10(2) \* P) + 1 L = pow(2,P) - 1 L = L % pow(10,500)\#将数字减少,否则后面的取余运算的时间会增大,导致超时 f = \[\] for i in range(500): f.append(L % 10) L /= 10 for i in range(500 - 1, -1, -1): sys.stdout.write('%d' % f\[i\]) if i % 50 == 0: print '' [ec301e4be0cc4161ba0fdc649eb8db05.png]: /images/20221024/338a9f0fab794ad48b449a5bd84cedb7.png
还没有评论,来说两句吧...