[英]Expression involving modular exponentiations in C++
我想计算C ++中的表达式(a n + b n + c n ) % 1000000003
。 当n很大时,我得到溢出错误。 有人可以帮我弄这个吗 ? 更具体地说, a = q + 1, b = - 2 * q
和c = 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.