快速幂:
//fastPow
int fastPow(int x,int n){
if(n==1) return x;
int tmp=fastPow(x,n/2); //fenzi
if(n%2==1) return tmp*tmp*x;
else return tmp*tmp;
}
gcd 求最大公约数:
//gcd
int gcd(int a,int b){
return b==0?a:gcd(b,a%b);
}
lcm求最小公倍数:
//lcm
int lcm(int a,int b){
return a/gcd(a,b)*b;
}
素数筛选法:
//e_cheak
int vis[1000010];
int prime[100010];
int e_cheak(int n){ //k为2-n素数的个数
for(int i=0;i<=n;i++){
vis[i]=0;
}
for(int i=2;i*i<=n;i++){
if(!vis[i]){
for(int j=i*i;j<=n;j+=i){
vis[j]=1;
}
}
}
int k=0;
for(int i=2;i<=n;i++){
if(!vis[i])
prime[k++]=i; //统计素数
}
return k;
}
进制转换:
//进制转化 x转化为y进制
string work(int x,int y){
string str="";
while(x){
if(x%y>=10) str+=x%y+'A'-10;
else str+=x%y+'0';
x/=y;
}
reverse(str.begin(),str.end());
return str;
}