結果

問題 No.378 名声値を稼ごう
ユーザー komori3komori3
提出日時 2017-08-29 22:05:11
言語 C++11
(gcc 11.4.0)
結果
AC  
実行時間 2 ms / 2,000 ms
コード長 1,398 bytes
コンパイル時間 1,293 ms
コンパイル使用メモリ 72,908 KB
実行使用メモリ 4,380 KB
最終ジャッジ日時 2023-09-12 15:03:08
合計ジャッジ時間 1,734 ms
ジャッジサーバーID
(参考情報)
judge13 / judge11
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 1 ms
4,376 KB
testcase_01 AC 1 ms
4,376 KB
testcase_02 AC 2 ms
4,380 KB
testcase_03 AC 1 ms
4,376 KB
testcase_04 AC 2 ms
4,376 KB
testcase_05 AC 1 ms
4,380 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cmath>
#include <string>
#include <vector>
#include <algorithm>
#include <queue>
#include <map>
#include <functional>
#include <set>
#include <numeric>
#include <stack>
#include <utility>
#include <time.h>
//#include "util.h"

using namespace std;
typedef long long lint;
typedef unsigned long long ull;
typedef pair<lint, lint> Pii;

#define PI 3.14159265358979323846
#define EPS 1e-6
#define MOD ((lint)1000000007)
#define MIN(a,b) ((a)<(b)?(a):(b))
#define MAX(a,b) ((a)>(b)?(a):(b))
#define CHAR_BIT 8

template <typename _Ty>
ostream& operator << (ostream& ostr, const vector<_Ty>& v) {
	if (v.empty()) {
		cout << "{ }";
		return ostr;
	}
	cout << "{" << v.front();
	for (auto itr = ++v.begin(); itr != v.end(); itr++) {
		cout << ", " << *itr;
	}
	cout << "}";
	return ostr;
}

ull EXP(ull N)
{
	ull ret = 0;
	while (N) {
		ret += N;
		N >>= 1;
	}
	return ret;
}

ull maxEXP(ull N, ull k)
{
	ull ret = 0;
	if (k == 1)
		return 2 * N;

	for (ull i = 0; i <= k - 2; i++) {
		ret += (N >> i);
	}
	ret += (N >> (k - 2));
	return ret;
}

ull maxEXP(ull N)
{
	ull max = 0;
	for (ull k = 1; k < 64; k++)
		max = MAX(maxEXP(N, k), max);
	return max;
}

int main()
{
	//clock_t start, end;
	//start = clock();
	
	ull N;
	cin >> N;
	cout << maxEXP(N) - EXP(N) << endl;

	//end = clock();
	//printf("%d msec.\n", end - start);

	return 0;
}
0