一.取模运算

取模(取余)运算法则:

1. (a+b)%p=(a%p+b%p)%p;

2.(a-b)%p=(a%p-b%p)%p;

3.(a*b)%p=(a%p * b%p)%p;

4.(a^b)%p=(   (a%p)^b  )%p;

5. (  (a+b)%p+c  )%p=( a+(b+c)%p  )%p;

6.( a*(b*c)%p )%p =( c*(a*b)%p )%p;

7.( (a+b)%p*c )%p= ( (a*c)%p + (b*c)%p )%p;

几条重要性质:

1.a≡b%p,呢么对于任意的c都有 (a+c)≡(b+c)%p, (a*c)≡(b*c)%p;

2.a≡b%p,c≡d%p呢么 (a+c)≡(b+d)%p,(a*c)≡(b*d)%p;

关于取余运算(rem)与取模运算(mod)的区别:

网上资料显示是他们的运算方式导致了有负数时出现不同结果

rem(a,b)=a-b*fix(a/b),是采用了fix()函数 向0方向取整(并且结果的正负一定与被除数 a 相同)

mod(a,b)=a-b*floor(a/b),采用了floor()函数 向负无穷方向取整 (并且结果的正负一定与除数 b 相同)

示例:mod(4,-3)= (4-(-3)*(-1.3) )= -  2 ; rem(4,-3)= (4-(-3)(-1.3) )= + 1; (我的DEV5.11采用的是rem)

快速幂,快速乘,gcd,最小公倍数模板代码:

#include<iostream>
#include<algorithm>
using namespace std;
/* 快速幂 ,快速乘,gcd,取模(取余)预算法则与取余预算区别*/
int main()
{
int a,b,c,d;
long long sum1=,sum2=;
cin>>a>>b>>c>>d; /*快速幂*/
while(b)
{
if(b%==)
sum1*=a;
b/=;
a*=a;
}
/*快速幂*/
cout<<sum1<<endl<<endl;
while(d)
{ if(d&)
sum2*=c;
c*=c;
d>>=;
}
cout<<sum2<<endl<<endl; /*快速乘*/
cin>>a>>b;
long long res=;
while(b!=)
{
if(b%==) res+=a;
a+=a;
b/=;
}
cout<<res<<endl<<endl;
/*快速乘 */
while(b>)
{
if (b&!=) res+=a;
a+=a;
b>>=;
}
cout<<res<<endl<<endl;
/* gcd */
int t,product;
cin>>a>>b;
product=a*b;
while(b)
{
t=b;
b=a%b;
a=t;
}
cout<<a<<" ";
cout<<"最小公倍数乘积除以最大公约数"
<<product/a<<endl<<endl;
cin>>a>>b;
/*百度大神代码*/
while(b^=a^=b^=a%=b);
cout<<a<<endl<<endl;
return ;
}

取模性质,快速幂,快速乘,gcd和最小公倍数的更多相关文章

  1. HDU 4549 矩阵快速幂+快速幂+欧拉函数

    M斐波那契数列 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Sub ...

  2. 组合数取模Lucas定理及快速幂取模

    组合数取模就是求的值,根据,和的取值范围不同,采取的方法也不一样. 下面,我们来看常见的两种取值情况(m.n在64位整数型范围内) (1)  , 此时较简单,在O(n2)可承受的情况下组合数的计算可以 ...

  3. A^B mod C (快速幂+快速乘+取模)题解

    A^B mod C Given A,B,C, You should quickly calculate the result of A^B mod C. (1<=A,B,C<2^63). ...

  4. ACM:a^b%p-数论-快速幂-快速乘

    a^b Time Limit: 1000MS   Memory Limit: 65535KB   64bit IO Format: Description 求a的b次方,取模mod(1<=a,b ...

  5. BZOJ-2875 随机数生成器 矩阵乘法快速幂+快速乘

    题目没给全,吃X了... 2875: [Noi2012]随机数生成器 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 1479 Solved: 829 ...

  6. [学习笔记]快速幂&&快速乘

    本质:二进制拆分(你说倍增我也没脾气).然后是一个配凑. 合起来就是边二进制拆分,边配凑. 快速乘(其实龟速):把乘数二进制拆分.利用乘法分配率. 用途:防止爆long long 代码: ll qk( ...

  7. BZOJ 2751 容易题(easy) 快速幂+快速乘

    2751: [HAOI2012]容易题(easy) Description 为了使得大家高兴,小Q特意出个自认为的简单题(easy)来满足大家,这道简单题是描述如下:有一个数列A已知对于所有的A[i] ...

  8. HDU - 5187 zhx's contest(快速幂+快速乘法)

    作为史上最强的刷子之一,zhx的老师让他给学弟(mei)们出n道题.zhx认为第i道题的难度就是i.他想要让这些题目排列起来很漂亮. zhx认为一个漂亮的序列{ai}下列两个条件均需满足. 1:a1. ...

  9. TZOJ 5291 游戏之合成(快速幂快速乘)

    描述 zzx和city在玩一款小游戏的时候,游戏中有一个宝石合成的功能,需要m个宝石才可以合成下一级的宝石(例如需要m个1级宝石才能合成2级宝石). 这时候zzx问city说“我要合成A级宝石需要多少 ...

随机推荐

  1. Servlet(六):Cookie

    Cookie 学习:问题: HTTP 协议是没有记忆功能的,一次请求结束后,相关数据会被销毁.如果第二次的请求需要使用相同的请求数据怎么办呢?难道是让用户再次请求书写吗?解决: 使用 Cookie 技 ...

  2. 【转】C# 串口操作系列(1) -- 入门篇,一个标准的,简陋的串口例子。

    C# 串口操作系列(1) -- 入门篇,一个标准的,简陋的串口例子. 标签: c#objectnewlineexceptionbytestring 2010-05-17 01:10 117109人阅读 ...

  3. Android的Launcher启动流程 “Launcher部分启动流程”

    研究代码从:AndroidManifest.xml.自定义的Application.java开始. Android系统启动时,系统需要一个Home应用程序来负责将这些应用程序展示出来:也就是该应用的目 ...

  4. 潭州课堂25班:Ph201805201 tornado 项目 第六课 用户和图片分享的集成(课堂笔记)

    tornado 相关说明 改善图片上传功能 ,生成唯一的 ID ,与路径拼接,生成 URL, 这里引用 uuid 的 python 库 在 photo.py 中创建个类,用来  辅助用户上传的图片,生 ...

  5. Express内置方法

    创建一个 Express 应用.express()是一个由 express 模块导出的入口(top-level)函数. //最顶级:top-level 内置方法 express.static(root ...

  6. Linux bash基础特性二

    shell脚本的组成部分 shebang 各种命令组合 编程变量种类 本地变量: 仅仅在当前的shell生效 环境变量: 在当前和子shell生效 局部变量: shell进程某代码片段 位置变量: $ ...

  7. TestNG 中DataProvider 的用法

    使用DataProvider提供数据有两种形式: 第一种:一种是在测试代码和测试数据放在同一个类中: 第二种:把所有的数据提供都单独写在一个类里面,当测试数据比较多时,这种方法利于维护. DataPr ...

  8. NOIP-金币

    题目描述 国王将金币作为工资,发放给忠诚的骑士.第一天,骑士收到一枚金币:之后两天(第二天和第三天),每天收到两枚金币:之后三天(第四.五.六天),每天收到三枚金币:之后四天(第七.八.九.十天),每 ...

  9. __x__(23)0907第四天__浏览器默认样式

    浏览器默认样式:         为了美观,浏览器为了在页面没有样式时,也可以有一个较好的显示效果,默认设置若干 margin,padding. 作为开发人员,在CSS编写最初,一般都会清除默认样式, ...

  10. vue_class 绑定_style 绑定

    1. class 绑定 data: { myClass: "bClass", hasA: true, hasB: false } 字符串模式: 类名不确定 <p class= ...