华为OD机试统一考试D卷C卷 - 数字游戏

题目描述

小扇和小船今天又玩起来了数字游戏,小船给小扇一个正整数 n(1 ≤ n ≤ 1e9),小扇需要找到一个比 n 大的数字 m,使得 m 和 n 对应的二进制中 1 的个数要相同,如:

  • 4对应二进制100
  • 8对应二进制1000
  • 其中1的个数都为1个

现在求 m 的最小值。

输入描述

输入一个正整数 n(1 ≤ n ≤ 1e9)

输出描述

输出一个正整数 m

用例

输入 2
输出 4
说明 2的二进制10,4的二进制位100,1的个数相同,且4是满足条件的最小数
输入 7
输出 11
说明 7的二进制111,11的二进制位1011,1的个数相同,且11是满足条件的最小数

Java

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int m = findNextNumberWithSameNumberOfOnes(n);
        System.out.println(m);
        scanner.close();
    }

    private static int findNextNumberWithSameNumberOfOnes(int n) {
        // c0 表示在找到的 "01" 模式中 0 的个数

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

2024华为OD机试题库D卷 文章被收录于专栏

本专栏给大家提供了华为2024最新华为OD(D)卷的题目汇总。华为OD机试刷题记录机考算法题库,帮助你上岸华为。提供C++/Java、JavaScript、Python四种语言的解法。

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务