计算表示为字符串的大量模数

问题描述

假设我有一个很大的数字(大约10 ^ 5位数字),我必须计算num%a,其中a小于10 ^ 9,即它在C ++的int范围内。有这样的代码:-

int res = 0;

//num contains the large number stored as a string
for (int i = 0; i < num.length(); i++) {
    res = (res*10 + (int)num[i] - '0') % a; 
    }

return res;

我知道此解决方案使用模块化算术,但我不明白为什么每次迭代时将 res 乘以10。

假设我有一个数字32471。 根据此代码,第一步将是 (0 * 10 + 3) % a

为什么这10个?不应该 (0 % a + (3 * 10^4) % a) % a依此类推,根据模块化算法?

有人可以解释一下我们是怎么到达的吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...