zoukankan      html  css  js  c++  java
  • 模与求余方面

    先来介绍一个相关的题,给定一个整型判定是否为3的幂,一般的是否为n的幂,因为指数增长,可以用空间换时间的方式,先存下来进行判定。
    下来介绍一下大整数取模的方法:
    “`

    a.(ab)mod n = (a mod n)(b mod n)mod n,可以得到
    123456789*987654321 = () (快速做选择题) D: 121932631112635269
    在这里我们介绍以下三个公式:
    **(a+b)mod n = ((a mod n)+ (b mod n))mod n;
    (a-b) mod n = ((a mod n )- (b mod n)+n)mod n;
    ab mod n = (a mod n) (b mod n) mod n****
    <1>.大整数取模(sicily 1020)
    这里要利用到公式:(a+b) mod (n) = (a mod n) + (b mod n) mod (n);
    把大整数写成自左向右的形式:1234 = ((1*10+2)*10+3)*10+4,然后利用前面这个公式,每步取模,算法如下

    <2> 幂取模(sicily 1294)
    这也是用到了同余的性质:xy mod c = (x mod c)* (y mod c) mod c

    <3>模线性方程
    题意:输入正整数a,b,n,解方程ax ≡ b (mod n) a,b,n<=109 。
    解答:
    * a ≡ b(mod n)的意思是说“a 和 b关于模n 同余 ”,即a mod n = b mod n。而a ≡ b mod n 的充要条件是: (a-b) 是n 的整数倍。 这样,这个问题就变成了ax-b是n的正整数倍。设这个”倍数”是y,则ax - b = ny,即ax - ny= b,因此,这个就回到了解不定方程的问题。
    * 比如给定方程ax +by +c = 0,求出满足这个方程的整数解(x,y).这里,我们首先来学习扩展欧几里德算法——找出一对整数(x,y),使得ax+by = gcd(a,b),这里的x,y不一定是整数,也可能是负数或者0,例如gcd(6,15) = 3,6*3 - 15*1 = 3,其中x = 3,y=-1;这个方程还有其他解,比如x = -2,y = 1

  • 相关阅读:
    React `${}` 格式
    echarts-for-react
    React 列表 瀑布流 修改样式瀑布流不起效果
    前端技术栈
    React 技术栈
    自定义点击body 退出登录url隐藏
    import 'element-ui/lib/theme-default/index.css'报错
    cnpm install element-ui --save
    Vue http://eslint.org/docs/rules/no-trailing-spaces 报错问题
    【loj 6363】地底蔷薇【拉格朗日反演】【生成函数】
  • 原文地址:https://www.cnblogs.com/freeopen/p/5483007.html
Copyright © 2011-2022 走看看