mirror of
https://github.com/Estom/notes.git
synced 2026-04-04 19:38:33 +08:00
123
This commit is contained in:
@@ -17,7 +17,7 @@
|
||||
操作 | 性质
|
||||
|-----| -----|
|
||||
n & (n - 1) | n中的最后一个1变成0。
|
||||
n & (\~n + 1) | lowbit()运算,n中最后一个1保留。
|
||||
n & (\~n + 1)<br> n&(n^(n-1)) | lowbit()运算,n中最后一个1保留。
|
||||
(\~n) + 1== -n | 计算机中补码表示的-n。位运算取反
|
||||
n/2 | 等价于 右移一位 n >> 1
|
||||
n*2 | 等价于 左移一位 n << 1
|
||||
|
||||
112
算法/A类:基本算法/4.12 gcd&lcm.md
Normal file
112
算法/A类:基本算法/4.12 gcd&lcm.md
Normal file
@@ -0,0 +1,112 @@
|
||||
## 最大公约数
|
||||
|
||||
### 循环法
|
||||
|
||||
```
|
||||
#include<iostream>
|
||||
|
||||
using namespace std;
|
||||
|
||||
int gcd1(int x,int y){
|
||||
if(x%y==0){
|
||||
return y;
|
||||
}
|
||||
return gcd1(y,x%y);
|
||||
}
|
||||
|
||||
int gcd2(int x,int y){
|
||||
int r = x % y;
|
||||
while( r )
|
||||
{
|
||||
x = y;
|
||||
y = r;
|
||||
r = x % y;
|
||||
}
|
||||
return y;
|
||||
|
||||
}
|
||||
|
||||
int lcm(int x,int y){
|
||||
int k = gcd2(x,y);
|
||||
return x*y/k;
|
||||
}
|
||||
int main(){
|
||||
int x=60,y=95;
|
||||
cout<<gcd1(x,y);
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
### 递归法
|
||||
|
||||
|
||||
```
|
||||
#include<iostream>
|
||||
|
||||
using namespace std;
|
||||
|
||||
int gcd1(int x,int y){
|
||||
if(x%y==0){
|
||||
return y;
|
||||
}
|
||||
return gcd1(y,x%y);
|
||||
}
|
||||
|
||||
int gcd2(int x,int y){
|
||||
int r = x % y;
|
||||
while( r )
|
||||
{
|
||||
x = y;
|
||||
y = r;
|
||||
r = x % y;
|
||||
}
|
||||
return y;
|
||||
|
||||
}
|
||||
|
||||
int lcm(int x,int y){
|
||||
int k = gcd2(x,y);
|
||||
return x*y/k;
|
||||
}
|
||||
int main(){
|
||||
int x=60,y=95;
|
||||
cout<<gcd1(x,y);
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
## 最小公倍数
|
||||
|
||||
```
|
||||
#include<iostream>
|
||||
|
||||
using namespace std;
|
||||
|
||||
int gcd1(int x,int y){
|
||||
if(x%y==0){
|
||||
return y;
|
||||
}
|
||||
return gcd1(y,x%y);
|
||||
}
|
||||
|
||||
int gcd2(int x,int y){
|
||||
int r = x % y;
|
||||
while( r )
|
||||
{
|
||||
x = y;
|
||||
y = r;
|
||||
r = x % y;
|
||||
}
|
||||
return y;
|
||||
|
||||
}
|
||||
|
||||
int lcm(int x,int y){
|
||||
int k = gcd2(x,y);
|
||||
return x*y/k;
|
||||
}
|
||||
int main(){
|
||||
int x=60,y=95;
|
||||
cout<<gcd1(x,y);
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
31
算法/A类:基本算法/4.12.cpp
Normal file
31
算法/A类:基本算法/4.12.cpp
Normal file
@@ -0,0 +1,31 @@
|
||||
#include<iostream>
|
||||
|
||||
using namespace std;
|
||||
|
||||
int gcd1(int x,int y){
|
||||
if(x%y==0){
|
||||
return y;
|
||||
}
|
||||
return gcd1(y,x%y);
|
||||
}
|
||||
|
||||
int gcd2(int x,int y){
|
||||
int r = x % y;
|
||||
while( r )
|
||||
{
|
||||
x = y;
|
||||
y = r;
|
||||
r = x % y;
|
||||
}
|
||||
return y;
|
||||
}
|
||||
|
||||
int lcm(int x,int y){
|
||||
int k = gcd2(x,y);
|
||||
return x*y/k;
|
||||
}
|
||||
int main(){
|
||||
int x=60,y=95;
|
||||
cout<<gcd1(x,y);
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user