取模性质,快速幂,快速乘,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级宝石需要多少 ...
随机推荐
- js判断是否在微信中打开
var ua = navigator.userAgent.toLowerCase(); if(ua.match(/MicroMessenger/i)=="micromessenger&quo ...
- Codeforces 852I Dating 树上莫队
Dating 随便树上莫队搞一搞就好啦. #include<bits/stdc++.h> #define LL long long #define LD long double #defi ...
- call、apply、bind
***call,apply,bind 替换this 何时: 只要this不是想要的都可用call,apply,bind替换 选择: call/apply: *调用*函数,在调用时,*临时*替换函数中的 ...
- Linux远程登录ssh免密码配置方法(仅供参考)
这篇文章主要介绍了linux远程登录ssh免密码配置方法,需要的朋友可以参考下(http://www.0834-3659999.com) 一.情景 公司刚上几台Linux,现在要把主机之间都能远程ss ...
- CodeForces - 1013C C - Photo of The Sky 贪心
题目链接: https://vjudge.net/problem/1735276/origin 题目大意与思路: 题目的基本意思就是求一个矩形的最小面积. 这个可以用最大最小值, 将他们分为X和Y组. ...
- 08-Xml & Tomcat
Xml & Tomcat Xml >eXtendsible markup language 可扩展的标记语言 XML 有什么用? 1. 可以用来保存数据 2. 可以用来做 ...
- 两个排序链表的合并(Easy)
问题来源:选自leetcode 21:合并两个有序链表 问题描述: 题目给定信息: 给定两个有序链表,把两个链表合并成一个链表,并且合并后的链表依然是有序的.这两个链表中允许有重复元素 问题分析: 设 ...
- Java HotSpot(TM) 64-Bit Server VM warning
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000007e4200000, 467140608, 0) ...
- 简单的3d变换
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title> ...
- spring-boot-maven-plugin 安装本地jar 包
本地使用nexus 进行maven仓库管理.项目deploy 引入之后,总是找不到jar中定义的class或者配置文件等. 从截图上可以看到虽然class文件是有的,但是引用的时候却是找不到的. Sp ...