取模性质,快速幂,快速乘,gcd和最小公倍数
一.取模运算
取模(取余)运算法则:
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和最小公倍数的更多相关文章
- HDU 4549 矩阵快速幂+快速幂+欧拉函数
M斐波那契数列 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Sub ...
- 组合数取模Lucas定理及快速幂取模
组合数取模就是求的值,根据,和的取值范围不同,采取的方法也不一样. 下面,我们来看常见的两种取值情况(m.n在64位整数型范围内) (1) , 此时较简单,在O(n2)可承受的情况下组合数的计算可以 ...
- 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). ...
- ACM:a^b%p-数论-快速幂-快速乘
a^b Time Limit: 1000MS Memory Limit: 65535KB 64bit IO Format: Description 求a的b次方,取模mod(1<=a,b ...
- BZOJ-2875 随机数生成器 矩阵乘法快速幂+快速乘
题目没给全,吃X了... 2875: [Noi2012]随机数生成器 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 1479 Solved: 829 ...
- [学习笔记]快速幂&&快速乘
本质:二进制拆分(你说倍增我也没脾气).然后是一个配凑. 合起来就是边二进制拆分,边配凑. 快速乘(其实龟速):把乘数二进制拆分.利用乘法分配率. 用途:防止爆long long 代码: ll qk( ...
- BZOJ 2751 容易题(easy) 快速幂+快速乘
2751: [HAOI2012]容易题(easy) Description 为了使得大家高兴,小Q特意出个自认为的简单题(easy)来满足大家,这道简单题是描述如下:有一个数列A已知对于所有的A[i] ...
- HDU - 5187 zhx's contest(快速幂+快速乘法)
作为史上最强的刷子之一,zhx的老师让他给学弟(mei)们出n道题.zhx认为第i道题的难度就是i.他想要让这些题目排列起来很漂亮. zhx认为一个漂亮的序列{ai}下列两个条件均需满足. 1:a1. ...
- TZOJ 5291 游戏之合成(快速幂快速乘)
描述 zzx和city在玩一款小游戏的时候,游戏中有一个宝石合成的功能,需要m个宝石才可以合成下一级的宝石(例如需要m个1级宝石才能合成2级宝石). 这时候zzx问city说“我要合成A级宝石需要多少 ...
随机推荐
- Aspnet Mvc 前后端分离项目手记(一) 关于跨域问题(还有前言)
前言,最近的项目使用前后端分离的模式,记录其中一些知识点.经过这个项目,也对前后端分离有了更多理解,尤其是在技术之外的方面. 越来越多的项目采用前后端分离的原因,有两点: 1,技术方面的原因 ...
- ISP PIPLINE (附加1) Green Imbalance
1.什么是Green imbalance 芯片的Gr和Gb通道获取的能量或者是输出的数据不一致,造成这种情况的原因一方面是Gr,Gb通道的半导体制造工艺方面的差异,另一方面是microlens的存在, ...
- ISP PIPLINE (七) gamma
what is the gamma? CCD.CMOS成像方式是通过像点中的"硅"感受光线的强弱而获得画面.而硅感光是物理成像,它真实地反应光线强度的变化,来多少就输出多少,因此它 ...
- 【AtCoder】【DP】【思维】Prefix Median(AGC012)
模的是这位神犇的代码:Atcoder AGC012F : Prefix Median 题意: 在动态中位数那道题上做了一些改动.给你一个序列a,可以将a重新任意排序,然后对于a序列构造出b序列. 假设 ...
- python#读csv,excel,json数据
#读csv,excel,json数据 with open('E:\\test\\xdd.csv','r') as f: for line in f.readlines(): print(line) i ...
- 项目导入之后报错:The import javax.servlet cannot be resolved
项目导入之后报错:The import javax.servlet cannot be resolved 解决方法:在Eclipse中,右击项目,选择Build Path->configure ...
- Java 标记接口
没有声明或定义方法的接口称为标记接口(Mark Interface).某个类实现该接口时不需要重写方法,表明具有接口标记的功能.Java中常用的3个标记接口如下: 1 Serializable jav ...
- IOS开发中发布的时候取消日志打印
在PCH文件中定义如下宏 #if DEBUG #define NSLog(...) NSLog(__VA_ARGS__) #define debugMethod() NSLog(@"%s&q ...
- __x__(38)0909第五天__雪碧图的制作
1. 用ps打开目标图片若干. 2. 调整合适的画布大小. 3. 将图片拖曳到一张里. 4. 存储为Web所用格式,选择 png24 .
- css边框渐变
在实际开发中,我们经常遇见边框需要背景渐变的实现要求,那么如何去实现呢,今天给大家分享依稀几种情况 1.直角的背景渐变 <!DOCTYPE html> <html lang=&quo ...