华为OD机试真题 - 找数字
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int num = in.nextInt();
System.out.println(getM(num));
}
public static int getM(int num) {
int ans = num;
LinkedList<Integer> one = new LinkedList<>();
LinkedList<Integer> zero = new LinkedList<>();
for (int i = 1; i <= num << 1; i = i << 1) {
if ((i & num) == 0) {
zero.add(i);
}
if ((i & num) == i) {
ans -= i;
one.add(i);
}
if (one.size() > 0 && (i & num) == 0) {
ans += i;
break;
}
}
for (int i = 1; i < 1 << one.size() - 1; i = i << 1) {
ans += i;
}
return ans;
}
Scanner in = new Scanner(System.in);
int num = in.nextInt();
System.out.println(getM(num));
}
public static int getM(int num) {
int ans = num;
LinkedList<Integer> one = new LinkedList<>();
LinkedList<Integer> zero = new LinkedList<>();
for (int i = 1; i <= num << 1; i = i << 1) {
if ((i & num) == 0) {
zero.add(i);
}
if ((i & num) == i) {
ans -= i;
one.add(i);
}
if (one.size() > 0 && (i & num) == 0) {
ans += i;
break;
}
}
for (int i = 1; i < 1 << one.size() - 1; i = i << 1) {
ans += i;
}
return ans;
}
全部评论
相关推荐
07-01 22:55
兰州城市学院 Java 点赞 评论 收藏
分享
点赞 评论 收藏
分享