c++易忘简单知识点
2016-05-18 17:25
302 查看
1. 辗转相除法(求最小公约数&&公倍数)
2. gcd
3.冒泡排序
4. 乘法逆元
定义:
满足a*k≡1 (mod p)的k值就是a关于p的乘法逆元。
为什么要有乘法逆元呢?
当我们要求(a/b) mod p的值,且a很大,无法直接求得a/b的值时,我们就要用到乘法逆元。
我们可以通过求b关于p的乘法逆元k,将a乘上k再模p,即(a*k) mod p。其结果与(a/b) mod p等价。
逆元求解
6.结构体排序
int f(int n,int m) { int r; if(n>m)swap(n,m);//使n为最小 while(n!=0) { r=m%n; m=n; n=r; } return m;//返回最大公约数 }
2. gcd
int gcd(int x,int y) { return y?gcd(y,x%y):x; }
3.冒泡排序
for(int i=0;i<10-1;i++) //n个数要进行n-1趟比较 { for(int j=10-1;j>=i+1;j--) //每趟比较n-i次 { if(a[j-1]>a[j]) //依次比较两个相邻的数,将小数放在前面,大数放在后面 { int t=a[j]; a[j]=a[j-1]; a[j-1]=t; } } }
4. 乘法逆元
定义:
满足a*k≡1 (mod p)的k值就是a关于p的乘法逆元。
为什么要有乘法逆元呢?
当我们要求(a/b) mod p的值,且a很大,无法直接求得a/b的值时,我们就要用到乘法逆元。
我们可以通过求b关于p的乘法逆元k,将a乘上k再模p,即(a*k) mod p。其结果与(a/b) mod p等价。
int find(int x) { int k=mod-2,ans=1; while(k) { if (k&1) ans=(lint)ans*x%mod; x=(lint)x*x%mod; k>>=1; } return ans; } x在%mod下的逆元
逆元求解
c++中string类的详解
6.结构体排序struct program { int s; int e; }p[maxn]; struct program temp; //这里的中间量一定要是结构体类型!!! for(i=0;i<n-1;i++) for(j=n-1;j>i;j--) if(p[j-1].e>p[j].e) //冒泡排序倒着来 { temp=p[j]; p[j]=p[j-1]; p[j-1]=temp; }
相关文章推荐
- 详解C++程序中定义struct结构体的方法
- 深入剖析C++中的struct结构体字节对齐
- 一个C++bug引入的许多知识
- C语言实现ping功能(查看设备联网状态)
- C++学习笔记(二)
- C++实现的Miller-Rabin素性测试程序
- C++与opencv的一些编程和函数的使用错误总结
- C++中的类指针
- C++中typename和class的区别
- 汇编下的C++虚函数
- 2.C++--const限定符
- STL源码笔记(17)—二叉排序树BST(C++封装)
- C++中如何使函数返回数组
- C++ 温习笔记(2) - extern,预处理命令#pragma,static
- c++友元
- 堆栈的实现(c语言)
- C++中的4种类型转换方式
- C++学习笔记(一)
- 探究Java和C++中的关键字:final vs. const
- C++实现模拟定时器