結果
| 問題 |
No.72 そろばん Med
|
| コンテスト | |
| ユーザー |
kichirb3
|
| 提出日時 | 2018-03-26 23:17:43 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,075 bytes |
| コンパイル時間 | 606 ms |
| コンパイル使用メモリ | 65,520 KB |
| 実行使用メモリ | 6,948 KB |
| 最終ジャッジ日時 | 2024-06-25 12:15:52 |
| 合計ジャッジ時間 | 1,643 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 WA * 1 |
| other | WA * 24 |
ソースコード
// No.72 そろばん Med
// https://yukicoder.me/problems/no/72
//
#include <iostream>
using namespace std;
long long solve(long long N);
long long calc_max(long long N, long long x);
int main() {
std::cin.tie(nullptr);
std::ios::sync_with_stdio(false);
long long N;
cin >> N;
long long ans = solve(N);
cout << ans << endl;
}
long long solve(long long N) {
long long ub = N;
long long lb = 1;
while (true) {
long long mid1 = (lb * 2 + ub) / 3;
long long mid2 = (lb + ub * 2) / 3;
long long mid1_score = calc_max(N, mid1);
long long mid2_score = calc_max(N, mid2);
if (mid2_score < mid1_score)
ub = mid2;
else
lb = mid1;
if (ub - lb <= 4)
break;
}
long long ans = 0;
for (long i = lb; i <= ub; ++i)
ans = max(ans, calc_max(N, i));
return ans % 1000007;
}
long long calc_max(long long N, long long x) {
long long tmp;
tmp = (N%1000007 * x%1000007) + N;
return (tmp - (x%1000007 * x%1000007))%1000007;
}
kichirb3