(相关资料图)
除法取模运算(公式法)注意,除法是指算术除法后向下取整,即计算机中的整数除法如果遇到(a/b)%m的问题,直接运算a/b然后取模是错误的,这时,我们往往需要求出b的逆元,然后将式子改为:(a*b的逆元)%m的形式,此时先做乘法再取模就正确了。
除此之外,还有一种方法,就是用以下公式求解:
x/d%m=x%(d*m)/d
证明:
\[\begin{aligned}\frac{x}{d} \%m &= \frac{x}{d}-m\cdot \frac{x}{d\cdot m}\\\frac{x\%(d\cdot m)}{d}&=\frac{x-d\cdot m\cdot \frac{x}{d\cdot m}}{d}\\&=\frac{x}{d}-m\cdot \frac{x}{d\cdot m}\end{aligned}\]例题[原题链接](Problem - I - Codeforces)
题目大意给两个整数n,m。求\(\frac{1}{n}\) 小数点后第m位。\(1\leq n \leq 10^5,1\leq m \leq 10^9\)
样例1输入3 5
输出3
样例2输入233 23
输出5
思路设\(k=\frac{1}{n}\),则求k小数点后第1位,就是把k乘以10然后取个位,求k小数点后第2位,就是k乘以100然后取个位,以此类推
故求k小数点后第m位就是\(\frac{10^m}{n} \% 10\),然后用公式转化为:\(\frac{10^m \%(10\cdot n)}{n}\)。然后就可以使用快速幂计算。
AC代码#includeusing namespace std;using i64 = long long;i64 n, m;i64 qp(i64 a, i64 b) {i64 res = 1;while (b) {if (b & 1) {res = res * a % (10 * n);b--;}a = a * a % (10 * n);b /= 2;}return res;}int main() {ios::sync_with_stdio(false);cin.tie(0);cin >> n >> m;cout << qp(10, m) / n;return 0;}
上一篇:全球速看:深圳龙岗区坪地街道开展端午节令食品安全专项检查
下一篇:最后一页
除法取模运算(公式法)***注意,除法是指算术除法后向下取整,即计算
本网讯为维护节日市场秩序,保证坪地居民能够过上安全、祥和的端午佳节
根据市教育局《关于做好2023年全市义务教育阶段学校招生入学工作的通知
如今网友们经常会考古一些电视剧,并诞生了不少玩梗新姿势。相信最近有
参考消息网6月25日报道据法新社报道,南非总统西里尔·拉马福萨23日说
【环球网报道记者朱嘉琪】彭博社24日援引韩联社报道称,一些韩国航空公
1、【问题描述】:系统重装的解决方案【简易步骤】:安装最新版本360安
1、有机纳米材料(organicnanomaterials)是2018年公布的生物物理学名
6月23日,张馨予携老公何捷罕见露面,出席电影《八角笼中》的映后礼,
【来源:黑山县气象局】大风蓝色预警信号:预计25日7时到26日7时,黑山