个人常用的一些零碎操作

定义


宏定义

#define else if elif
#define INF 0x3f3f3f3f

类型定义

typedef unsigned int Uint;
typedef long long ll;
typedef unsigned long long Ull;
typedef long double ld;

常量定义

const int MAX_N = 1e6 + 10;

操作


判断奇偶

(n & 1) 奇数

交换数字

a ^= b ^= a ^= b;

读入带有空格的字符串

gets() 这种东西早就已经停留在了教科书上

scanf("%[^\n]",str);

读取含指定内容的字符

基本上就是一些比较简单的 regex_expressions

结构体排序

struct TKLA{
     
	int a,b;
	bool operator <(const TKLA&t)const{
     
		return t.a < a;}
}arr[MAX_N];

OR

vector<TKLA> exa;
.... 
sort(exa.begin(),exa.end(),[](TKLA x,TKLA y){
     return x.a < y.a;});

对数换底公式

log(n) / log(m) = logmn ,m != 1

函数


一些递归

gcd 最小公因数
int gcd(int a,int b){
     
	return !b?a:(a%b==0?b:gcd(b,a%b));}
	
int gcd(int a,int b){
     
	while(b^=a^=b^=a%=b);
return a;}

__gcd(a,b);//  内置
斐波那契数列(常系数二阶递推)
Ull fib(int n){
     
	return (n<2)?1:fib(n-1)+fib(n-2);}
阶乘
Ull fic(int n){
     
	return n?n*fic(n-1):1;}
汉诺塔问题(一阶递推)
Ull hanio(int n){
     
	return a*hanio(n-1)+1;}
	
Ull hanio(int n){
     
	return 1<<n - 1;}

符号函数

int sgn(int n){
     
	return x>0?1:x<0?-1:0;}

快速幂

int power(int n,int m,int mod){
     
	int ans = 1 % mod;
	for(;m;m>>=1){
     
		if(m & 1)
			ans = ll(ans)*n%mod;
		n = ll(n)*n%mod;}
return ans;}

lowbit

int lowbit(int n){
     
	return n & (-n);}

你可能感兴趣的:(TKLA,字符串,正则表达式)