在C++中负数取余位了避免出现负数运用==同余定理==
x%mod=(x%mod+mod)%mod
路灯覆盖问题:一个灯可以照亮+-k的区域,路的长度为l,需要的最少路灯数量为多少?
n = l / (2k+1) 上取整,即n = (l + 2k + 1 - 1) / (2k + 1)
==欧几里得算法==:两个整数的最大公约数等于其中较小数与两数的差的最大公约数
1
2
3
4
5
6
7
8
9
10int gcd(int a, int b) {
if (b == 0) {
return a;
} else {
return gcd(b, a % b);
}
}
int gcd(int a, int b){
return b ? gcd(b, a % b) : a;
}==裴蜀定理==:对于任意整数x,y, ax+by都一定是d的倍数
ax + by = gcd(a,b)
note:0 和x的最大公约数为x