一.取模运算

取模(取余)运算法则:

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. 20172328 2018—2019《Java软件结构与数据结构》第二周学习总结

    20172328 2018-2019<Java软件结构与数据结构>第二周学习总结 概述 Generalization 本周学习了第三章集合概述--栈和第四章链式结构--栈.主要讨论了集合以 ...

  2. 20172328 2018-2019《Java软件结构与数据结构》第五周学习总结

    20172328 2018-2019<Java软件结构与数据结构>第五周学习总结 概述 Generalization 本周学习了第九章:排序与查找,主要包括线性查找和二分查找算法和几种排序 ...

  3. 如何配置.Net Core Centos守护进程配置

    一.安装supervisor 运行命令 yum install supervisor 二.配置supervisor 1.运行命令创建文件夹 mkdir -p /etc/supervisor/conf. ...

  4. 【Linux】使用Nginx发布dotnet的网站

    1.安装Nginx[自行百度] 2.安装dotnet运行时[自行百度] 3.配置Nginx——  /etc/nginx/conf.d/default.conf server { listen ; se ...

  5. Android 多媒体 播放音视频

    1.播放音频 因为涉及到读取文件,所以需要申请权限 <uses-permission android:name="android.permission.WRITE_EXTERNAL_S ...

  6. Vue(二十六)父子组件通信

    今天写了一个分页公共组件,就出现了父子组件通信的问题,今天来总结下我遇到的父子组件通信问题 一.子组件调取父组件的数据或方法 (1)props 想要把父组件的值,传到子组件中,使用props 比如你在 ...

  7. centos6.5安装ganglia-gmond

    安装过程借鉴许多博客,最后得出没有出错的流程. 一.安装依赖包: yum -y install gccglibc glibc-common rrdtool rrdtool-devel apr apr- ...

  8. window iis重启

    WINDOWS server 任务计划实现定时自动重启IIS编写批处理文件IIS.bat@echo offnet stop iisadmin /yesnet start iisadminnet sta ...

  9. 关于SQLite3笔记

    sq .help .quit .exit 创建和连接数据库:在linux中 sqlite3 数据库名 没有就创建 有就连接 .show 显示各种设置的当前值. .echo ON|OFF echo命令 ...

  10. 几个bat文件(关于robot freamwork安装)

    如果安装后 没有这几文件,或者在运行后 提示 文件缺少这个文件 , 就需要手动创建.   一般文件在 :C:\Python27\Scripts 这个目录下 1.pybot.bat文件: @echo o ...