当前位置: 首页> 教育> 幼教 > 007工作制_网页设计素材1000像素个人_湖南网站排名_网站服务费一年多少钱

007工作制_网页设计素材1000像素个人_湖南网站排名_网站服务费一年多少钱

时间:2025/8/27 5:09:01来源:https://blog.csdn.net/2303_80166945/article/details/147521375 浏览次数:0次
007工作制_网页设计素材1000像素个人_湖南网站排名_网站服务费一年多少钱

目录

1.判断一个整数是不是2的幂

2.判断一个整数是不是3的幂

3.大于n的最小的2次幂的数

4.交换两个数

 5.找到1-n中缺失的数字

6.判断数组中2个出现次数为奇数的数

6.求给定范围内所有数字&的结果

7. 求出现次数少于m的数 


1.判断一个整数是不是2的幂

 提取出二进制里最右侧的1

bool is_mi(int n){//注意运算符的优先级,这里要加括号 return n>0&&n==(n&(~n+1));
}

2.判断一个整数是不是3的幂

如果一个数字是3的次幂,那么这个数一定 只含有3的这个质数因子,1162261467是int范围内最大的3次幂,如果1162261467%n!=0那么就不是3的次幂

bool is_mi(int n){return n>0&&1162261467%n==0;
} 

3.大于n的最小的2次幂的数

如果n是负数直接返回1,否则的话进行位运算的操作

int  mi(int n){if(n<0)return 1;n--;n|=n>>1;n|=n>>2;n|=n>>4;n|=n>>8;n|=n>>16;return n+1;
}

4.交换两个数

void swap(int a,int b){a=a^b;b=a^b;a=a^b;
}

 5.找到1-n中缺失的数字

int missing(int n,int a[]){int x=0;for(int i=0;i<n;i++){x^=i;x^=a[i];}x^=n;return x;
} 

6.判断数组中2个出现次数为奇数的数

void que2(){
int x=0;
for(int i=0;i<12;i++)
x^=a[i];
int y=x&(~x+1);
int x1=0;
for(int i=0;i<12;i++){if((a[i]&y)==0)x1^=a[i];
}
x^=x1;
cout<<x<<" "<<x1; 
}

6.求给定范围内所有数字&的结果

int rek(int l,int r){while(l<r)r-=r&(~r+1);return r;
}

7. 求出现次数少于m的数 

void  kk(int m){
memset(cnt,0,sizeof(cnt));
for(int i=0;i<12;i++){for(int j=0;j<32;j++)cnt[j]+=(a[i]>>j)&1;
}
int ans=0;
for(int i=0;i<32;i++){if(cnt[i]>0&&cnt[i]<m){ans|=1<<i;}
}
cout<<ans; }

关键字:007工作制_网页设计素材1000像素个人_湖南网站排名_网站服务费一年多少钱

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: