1、求最大连续bit数
//当num为负数时,死循环
int main() {
int num;
while (cin >> num) {
int count = 0, max_count = 0;
while (num != 0) {
if (num & 1) {
count++;
if (count >= max_count) {
max_count = count;
}
}
else {
count = 0;
}
num = num >> 1;
}
cout << max_count << endl;
}
}
//2、解决负数问题
int main() {
long long num;
while (cin >> num) {
int count = 0, max_count = 0;
for (int i = 0; i < 32; i++) {
if (num & (1 << i)) {
count++;
max_count = max(count, max_count);
}
else {
count = 0;
}
}
cout << max_count << endl;
}
}
2、最近公共祖先
//循环
class LCA {
public:
int getLCA(int a, int b) {
while (a != b){
if (a>b){
a /= 2;
}
else{
b /= 2;
}
}
return a;
}
};
//递归
class LCA {
public:
int getLCA(int a, int b) {
if (a>b){
a = a / 2;
}
else if (a<b){
b = b / 2;
}
else{
return a;
}
return getLCA(a, b);
}
};
int main(){
LCA a;
int i = a.getLCA(66,77);
cout << i << endl;
}
3、二进制插入
class BinInsert {
public:
int binInsert(int n, int m, int j, int i) {
return n | (m << j);
}
};
4、查找组成一个偶数最接近的两个素数
1)先对偶数除以2------->i,然后判断此数是否为素数;
2)循环(i--)判断(i与num-1)是否同时为素数;
3)输出i与num-i;
bool Is_prime(int n){
for (int i = 2; i <= sqrt(n); i++)
{
if (n%i == 0){
return false;
}
}
return true;
}
int main() {
int num = 0;
while (cin >> num) {
for (int i = num / 2; i >= 0; i--){
if (Is_prime(i) && Is_prime(num - i)){
cout << i << endl << num - i << endl;
break;
}
}
}
}