繁体   English   中英

C ++中涉及模幂的表达式

[英]Expression involving modular exponentiations in C++

我想计算C ++中的表达式(a n + b n + c n ) % 1000000003 当n很大时,我得到溢出错误。 有人可以帮我弄这个吗 ? 更具体地说, a = q + 1, b = - 2 * qc = q - 1 我一直在下面所概述的功能

我可以打破(a n + b n + c n ) % 1000000003(a n ) % 1000000003 + (b n ) % 100000003 + (c n ) % 1000000003或类似的东西? 而且我只能使用unsigned long long int

您可以分配模数。 从数学上讲,这将是合理的:

( ((a^n)%1000000003) + ((b^n)%100000003) + ((c^n)%1000000003) ) % 1000000003;

这将避免您必须计算超出范围的数字,从而可以为n选择更大的值。

证明

只要确保在math.h模块中使用pow

( ((pow(a, n))%1000000003) 
    + ((pow(b, n))%100000003) 
    + ((pow(c, n))%1000000003) ) % 1000000003;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM