1.进制转换 10进制转16进制
while(a!=0){
if(a%16>=10) b[i++]=a%16+'A'-10;
else b[i++]=a%16+'0';
a=a/16;
}
2.进制转换 16进制转10进制
for(int i=0;i<s.size();i++){
if(s[i]>='0'&&s[i]<='9')
num = num*16+(s[i]-'0');
else if(s[i]>='A'&&s[i]<='F')
num = num*16+(s[i]-'A'+10);
}
3.判读素数
int isprime(int n){
if(n<=1)
return 0;
else if(n==2||n==3){
return 1;
}else{
for(int i=2;i*i<n;i++){
if(n%i==0) return 0;
}
return 1;
}
}
4.分解质因数
while(temp!=1){
for(int j=2;j<=temp;j++){
if(isprime(j)&&temp%j==0){
temp=temp/j;
if(flag==1) cout<<"*";
cout<<j;
flag=1;
break;
}
}
5.矩阵的乘法
while(--m){
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
for(int k=n;k>=0;k--){
b[i][j]+=t[i][k-1]*a[k-1][j];
}
}
}
6.二分算法模板
int l=0,r=nums.size()-1; //while循环里面套了一个if else 判断语句。
while(l<r){
int mid=l+(r-l)/2;
if(nums[mid]>=target) r=mid;
else l=mid+1;
}
while(l<r){
int mid=l+(r-l+1)/2;
if(nums[mid]<=target) l=mid;
else r=mid-1;
}
int gcd (int a,int b){
return b ? gcd(b,a % b): a;//a和0的最大公约数是a 因为0可以整除任何数
}
int lcm(int a,int b){
return a * b / gcd(a,b);
}