AC(包熟)

许诺  •  11天前


#include <iostream>
using namespace std;

int findSurvivor(int n) {
	int m = 1;
	while (m * 2 <= n) {
    		m *= 2;
	}
	int L = n - m;
	return 2 * L + 1;
}

int main() {
	int n;
	cin >> n;
	int total = 0;
	int current_n = n;

	while (true) {
    		int s = findSurvivor(current_n);
    		int high = current_n - s;
    		if (high == 0) {
        			total += current_n * 2;
        			break;
    		} else {
        			total += high;
        			current_n = s;
    		}
	}

	cout << total << endl;
	return 0;
}

评论:

请先登录,才能进行评论