目录
题目一:二进制插入
题目链接:二进制插入_牛客题霸_牛客网 (nowcoder.com)
解题思路:
代码实现:
题目二:查找组成一个偶数最接近的两个素数
题目链接:查找组成一个偶数最接近的两个素数_牛客题霸_牛客网 (nowcoder.com)
解题思路:
代码实现:
题目一:二进制插入
题目链接:二进制插入_牛客题霸_牛客网 (nowcoder.com)
解题思路:
第一种:
i=5,j=2
n=10000001
m=1101
取出m的每一个二进制位 (m>>k)&1 假设k=0,即第一位二进制位(1101&0001)=0001
左移j+k位,取到逐个赋值到对应n的对应位数,或操作就是任意一个为1,则当前位为1
第二种:
n=10000001
m= 1101
n|=m=10011011
m左移j位,然后进行与n或运算(|)即可
代码实现:
class BinInsert {
public:
int binInsert(int n, int m, int j, int i) {
for(int k=0;k<=i-j;k++)
{
n|=((m>>k)&1)<<(j+k);
}
return n;
// return n|(m<<j);
}
};
题目二:查找组成一个偶数最接近的两个素数
题目链接:查找组成一个偶数最接近的两个素数_牛客题霸_牛客网 (nowcoder.com)
解题思路:
1、素数:判断素数,素数表示除过1和本身,不能被其它数整除
2、找到组成一个偶数的两个素数
3、先从偶数的中间位置开始从两边查找素数对,
20-->10
10 20-10
9 11 9不是素数
8 12 8和12不是素数
7 13 7和13都是素数
代码实现:
#include <iostream>
#include<cmath>
using namespace std;
bool isPrime(int num)
{
for(int i=2;i<=sqrt(num);i++)
{
if(num%i==0)
{
return false;
}
}
return true;
}
int main()
{
int num=0;
while(cin>>num)
{
int i=0;
for(i=num/2;i>=0;i--)
{
if(isPrime(i)&&isPrime(num-i))
{
break;
}
}
cout<<i<<endl;
cout<<num-i<<endl;
}
}