第一题
给一个十进制数 将它变为二进制后 把第二个0变为1
比如 10(1010)->14(1110)
2(10)->6(110)
这个不知道为啥只能a90
#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
#include<map>
#include<unordered_set>
#include<stack>
#include<cmath>
using namespace std;
int changeNumber(int num) {
// write code here
vector<int> a;
int j = 0;
while (num != 0){
a.push_back(num % 2);
num /= 2;
j++;
}
int flag = 0;
for (int i = 0; i < a.size(); i++){
if (a[i] == 0) flag++;
if (flag == 2) a[i] = 1;
}
if (flag == 0){
a.push_back(1);
flag++;
}
if (flag == 1){
a.push_back(1);
}
int ans = 0;
for (int i = 0; i < a.size();i++){
ans += a[i]*pow(2, i);
}
return ans;
}
int main()
{
changeNumber(2);
system("pause");
return 0;
}
第二题
这个a了