充满力量
Overflow with power
如果我在计算[x*(a^b)%mod+y%mod]%mod,如果我只使用(a^b)%mod的话,乘以x会得到正确的答案吗?分步计算(x*(a^b))%mod不是更好的主意吗?只是想向自己证明为什么不包括x作品。能做些什么?
试试这个代码。其思想是引入模加法、乘法和幂运算的新函数:
#define MOD 1000000007
inline int modadd(int a, int b) {
return ((long long)a + b) % MOD;
}
inline int modmult(int a, int b) {
return ((long long) a * b) % MOD;
}
inline unsigned modexp(unsigned base, unsigned exp)
{
unsigned result = 1;
while (exp > 0) {
if (exp & 1) result = ((unsigned long long)result * base) % MOD;
base = ((unsigned long long)base * base) % MOD;
exp >>= 1;
}
return result;
}
int main(void)
{
unsigned A[3] = {1, 2, 3};
unsigned r[3];
unsigned i, n = 3;
r[0] = 0;
r[1] = modmult(2, A[0]);
for (i = 1; i < n; i++) {
r[i+1] = modadd(r[i], modmult(A[i], modexp(2, i)));
}
}
相关文章:
- 有没有办法检查标准库 c++ 中的队列何时已满?
- 磁盘已满时,Boost日志崩溃
- 无法对套接字执行操作,因为系统缺少足够的缓冲区空间或队列已满
- QTCPSOCTED数据传输在读取缓冲区已满时停止,并且在释放时不会恢复
- async_read_until:缓冲区空间不足或队列已满
- 可以检查提升::无锁::队列是否已满吗?
- 当TCP TX缓冲区填满时,boost::asio中会发生什么
- 在吸引人的身体上找到加速的力量
- 为什么 malloc 没有填满内存?
- 在堆栈已满之前,在C/C 中以最大递归函数调用并给出分段故障
- 文件读取时,文件读取失败后,内存已满
- C Getline力量可以关闭带有空间的控制台应用程序
- 当接收缓冲区几乎满时,阻止UDP数据包被部分截断
- C++寻找数字的力量和绝对值
- 如何计算'满'与NVIDIA cuDNN卷积
- 如何将 3d int* 指针数组传递给函数并检查是否已满
- 检测到堆栈已满
- 如何检查数组是否已满以及其大小是否为数组的两倍/一半
- 充满力量
- 利用虚函数的力量