python - 这里可能有更好的算法吗?

标签 python algorithm

我正在尝试解决 this Python 中的问题。请注意,只有初吻需要交替,任何由于初吻而不属于链的一部分的吻都可以很好地拥抱第二个下一个人,这是我想出的代码。这只是一个简单的数学计算,没有循环,没有迭代,什么都没有。但我仍然收到超时消息。有什么办法可以优化吗?

import psyco
psyco.full()
testcase = int(raw_input())
for i in xrange(0,testcase):
    n = int(raw_input())
    if n%2:
        m = n/2;
        ans = 2 + 4*(2**m-1);
        ans = ans%1000000007;
        print ans
    else:
        m = n/2 - 1
        ans = 2 + 2**(n/2) + 4*(2**m-1);
        ans = ans%1000000007
        print ans

最佳答案

您正在计算具有非常大指数的能力,如果结果不在过程中减少,这将非常慢。例如,10**10000000 % 11 的简单计算需要创建一个 10000000 位数字并取模 11。更好的方法是 modular exponentiation在每次乘法后减少模 11,整数永远不会变大。

Python 提供内置的模幂运算。使用 pow(a,b,c) 计算 (a**b) % c

这是假设你的算法是正确的,我没有验证。

关于python - 这里可能有更好的算法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12234867/

相关文章:

python - 将 pandas DataFrame 中的字符串替换为当前索引的值。

python - 'utf- 8' codec can' t 解码字节读取 Python3.4 中的文件,但不是 Python2.7

algorithm - Quicksort面试题: Quicksort run three times

algorithm - 将事件事件节点图转换为事件节点图

java - Java 中的作业调度算法

algorithm - Q处理的QA算法

algorithm - 搜索实用程序大型机算法

python - 如何遍历类似于 PHP 的 foreach 函数的 python 数组/对象

python - 适合运行多个站点的 Django 开发服务器的 cookie 域

python - 仅使用单个目标复制 waf 中的多个文件