longlongpow(longlong base,int k){longlong ans =1;while(k >0){if(k &1){
ans *= base;}
k >>=1;
base *= base;}return ans;}
进制转换
voidbinary(int x,int k){
string str ="";int p;while( x >0){
p = x % k;if(p >9){
str +='a'+ p;}else{
str +='0'+ p;}
x /= k;}reverse(str.begin(), str.end());
cout << str << endl;}
最大公约数和最小公倍数
intgcd(int a,int b){// 最大公约数return b ==0? a:gcd(b, a%b);}intcommon(int a,int b){int p =gcd(a, b);return a*b/p;}
stringstream 类型转换
voidi2s(int x, string &s){// int 转 string
stringstream ss;
ss << x;
ss >> s;}voids2i(string s,int&x){// string 转 int
stringstream ss;
ss << s;
ss >> x;}
Dijkstra最短路径
//Dijkstra核心代码
vis[u]=true;for(int i =1; i < n; i++){int minn = inf;for(int i =1; i <= n; i++){if(!vis[i]&& dis[i]< minn){
minn = dis[i];
u = i;}}
vis[u]=true;for(int v =1; v <= n; v++){if(mp[u][v]< inf){if(dis[v]> dis[u]+ mp[u][v])
dis[v]= dis[u]+ mp[u][v];}}}
Floyd
// 核心代码for(int k =1; k <= n; k++){for(int i =1; i <= n; i++){for(int j =1; j <= n; j++){if(dis[i][j]> dis[i][k]+ dis[k][j])
dis[i][j]= dis[i][k]+ dis[k][j];}}}