我想执行这个数学函数:POW()函数给出错误的结果
3^(3^1000000000) mod 1000000007
这样做的结果是:930782551
但这样做直接在Python花费大量的时间,和该程序挂起:
return pow(3,pow(3,1000000000),1000000007)
所以,我认为执行这将是相同的:
return pow(3,pow(3,1000000000, 1000000007),1000000007)
但结果是:270196661
我怎样才能在合理的时间正确的结果930782551
?
你的WA表达应该是'(3 ^((3^1000000000)mod1000000007))mod1000000007'。你放在那里和你放在这里的东西是不一样的。 –
寻求调试帮助的问题(“为什么这个代码不工作?”)必须包含所需的行为,特定的问题或错误以及在问题本身中重现问题所需的最短代码。没有明确问题陈述的问题对其他读者无益。见[mcve]。 –
你需要费马小定理/欧拉定理来有效地做到这一点。幸运的是,1000000007是素数,所以很容易计算它的总体函数。 –