ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

简洁的取模还原分数方法

2021-05-22 22:02:43  阅读:190  来源: 互联网

标签:分数 取模 简洁 int le swap pair AB


假设同余 p p p 下的数 q q q 原本是一个分子分母的绝对值都很小的分数(准确讲,是已知 ∣ a ∣ ≤ A , ∣ b ∣ ≤ B |a|\le A, |b|\le B ∣a∣≤A,∣b∣≤B,且 A B = o ( p ) AB = o(p) AB=o(p)),我们可以还原出一组解 q ≡ a / b q\equiv a/b q≡a/b。

万能欧几里得当然是可以做的。但是为什么说我们有一个异常简洁的方法呢?

pair<int, int> approx(int p, int q, int A) {
  int x = q, y = p, a = 1, b = 0;
  while (x > A) {
    swap(x, y); swap(a, b);
    a -= x / y * b;
    x %= y;
  }
  return make_pair(x, a);
}

相信这个东西可以成为大家调试时的有力工具。

标签:分数,取模,简洁,int,le,swap,pair,AB
来源: https://blog.csdn.net/EI_Captain/article/details/117172239

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有