您的位置:首页 > 其它

二分迭代求等比数列和

2015-08-16 00:33 204 查看
首先说明一下,为什么不直接套公式呢?

因为(A/B)%C需要求B%C的模逆元,然后B,C还不一定是互素的,不互素,就没法把除法逆向为乘法了(至少我没听说过)。

等比数列求和也可以用矩阵来写,这个主要看人。

用二分来写比较简单,下面是代码

int quik_sum(int a,int x)
{
int res = 1;
while(x)
{
if(x&1) res = res*a%mod;
a = a*a%mod;
x >>= 1;
}
return res;
}

int solve(int a, int k)
{
if(k==1) return 1;
if(k&1) return (solve(a,k>>1)*(quik_sum(a,k/2+1)+1) + quik_sum(a,k/2))%mod;
else return solve(a,k>>1)*(quik_sum(a,k>>1)+1)%mod;
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: