好吧,我需要计算下一个数字的模数10 ^ 9 + 7: 2 ^(N-1)2(N-2)+ ... + 2(N-P) 其中值是: N'LT; = 5000 P< = 5000 所以基本上,最高可能的数字是: 2 ^(4999)+ 2 ^(4998)+ ... + 2 ^ 0 这是我尝试过的,但我想这还不足以覆盖这个大数字。
long long power(int x,int n)//calculates (x^n) % 10^9+7
{
long long sol=1;
long long b=x;
while(n){
if(n&1==1){
sol*=b;
sol%=1000000007;
}
n>>=1;
b*=b;
b%=1000000007;
}
return sol;
}
long long calculate(int n,int p){//calculates 2^(n-1)+2^(n-2)+...+2^(n-p)
long long ret=power(2,n-1);p-=1;
while(p--!=0)
ret=(ret%1000000007+(ret/2)%1000000007)%1000000007;
return ret;
}
此代码应计算每2 ^(n-someNumber)的模数,然后将所有模数%10 ^ 9 + 7相加以获得最终数。 我对大数字不太好,所以请帮忙。 这个代码是否会覆盖尽可能多的情况? 提前谢谢,