首页 > 编程知识 正文

怎样求最大余数和最小余数,除数大的余数一定大

时间:2023-05-03 16:09:49 阅读:275489 作者:2230

问题

提供两个数据 a,b,计算 a%b 的余数。
你可能会觉得这个问题很简单。我们用 C++ 为例,如果 a 和 b 可以在 long long 表示范围,那么这个问题非常简单。但是如果 a 超过了 C++ 中 long long 都超过的数据,我们要如何求余数?

计算过程分析

比如求 443   %   3 443 % 3 443 % 3,我们先来演算一下。如下图,图像来自网络搜索。
下面我们来解释一下完整的计算过程:
1、第一个数字(百位) 4 4 4: 4 % 3 = 1 4%3=1 4%3=1;
2、第二个数字 (十位) 4 4 4: ( 1 ∗ 10 + 4 ) % 3 = 2 (1*10+4)%3=2 (1∗10+4)%3=2;
3、第三个数字(个位) 3 3 3: ( 2 ∗ 10 + 3 ) % 3 = 2 (2*10+3)%3=2 (2∗10+3)%3=2。
说明最终 443 % 3 = 2 443%3=2 443%3=2。

代码

因此,我们只需要模拟上面的过程进行计算即可。

//数据保存在字符串string s中int calc(int x) {int ans=0;for (int i=0; i<s.length(); i++) {ans*=10;ans+=(s[i]-'0');ans%=x;}return ans;} 样例测评

我 OJ 上的巧妙的数,本题来自上海计算机学会竞赛 2021 年 4 月月赛丙组。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。