我使用这个公式来计算2 ^ n的最后m位数。
pow=2+(n-m)%(4*5^(m-1))
ans =(2^pow)%(10^m)**
但这不适用于n=2009
和m=3
。
建议我的计算中的任何错误或更好的公式。
答案 0 :(得分:1)
我不明白你的公式在做什么,但最简单的方法是计算(2^2009)%(10^m)
。以下是在(x^y)%mod
中查找O(log y)
的伪代码。放x=2, y=2009
和mod=10^m
power(x,y)
{
if( y == 0)
return 1
temp = power(x, y/2)
if (y%2 == 0)
return (temp*temp)%mod
else
return ((x*temp%mod)*temp)%mod
}