37 条题解

  • -1
    @ 2025-7-25 16:30:01
    #include <iostream>
    using namespace std;
    
    int min_choices(int N) {
        int choices = 0;
        while (N > 0) {
            if (N % 2 == 1) {  // 如果是奇数
                if (N != 1) {   // 不是最后一个苹果
                    choices++;
                }
                // 选择拿走(n-1)/2,这样剩下的苹果数就是n/2(向下取整)
                N = N / 2;
            } else {
                // 偶数直接拿一半
                N = N / 2;
            }
        }
        return choices;
    }
    
    int main() {
        int T;
        cin >> T;
        
        for (int i = 0; i < T; i++) {
            int N;
            cin >> N;
            cout << min_choices(N) << endl;
        }
        
        return 0;
    }
    
    

    信息

    ID
    1
    时间
    1000ms
    内存
    128MiB
    难度
    1
    标签
    递交数
    4607
    已通过
    1304
    上传者