如何计算(1 + a%m + a ^ 2%m ...... + a ^ n%m)之和

时间:2013-09-23 09:41:34

标签: algorithm

如何计算(1+a%m+a^2%m……+a^n%m) m=k!, 1<=k<=12, n<=10^18的总和。如何计算这笔金额。 使用电脑和时间限制是3秒。 抱歉我的错误

2 个答案:

答案 0 :(得分:5)

1+a+a^2+...+a^n = (1+a+a^2+...+a^n)*(1-a)/(1-a) =
= (1 - a^(n+1))/(1-a)

换句话说,您的表达式可以计算为:

(1 - a^(n+1))/(1-a) % m

或者,以程序化形式,

fmod((1-pow(a,n+1))/(1-a), m)

答案 1 :(得分:0)

 sum = 0;
 i = 0;
 while(i <= n){
 sum = sum + math.pow(a,i);
 i++;
 }
 result = sum % m;