結果
| 問題 |
No.604 誕生日のお小遣い
|
| コンテスト | |
| ユーザー |
ei1333333
|
| 提出日時 | 2017-12-04 00:04:05 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 3 ms / 1,000 ms |
| コード長 | 1,044 bytes |
| コンパイル時間 | 2,238 ms |
| コンパイル使用メモリ | 195,644 KB |
| 最終ジャッジ日時 | 2025-01-05 04:44:02 |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 21 |
ソースコード
#include<bits/stdc++.h>
using namespace std;
ostream &operator<<(ostream &os, __int128_t value)
{
if(ostream::sentry(os)) {
__uint128_t tmp = value < 0 ? -value : value;
char buffer[64];
char *d = end(buffer);
do {
--d;
*d = "0123456789"[tmp % 10];
tmp /= 10;
} while(tmp != 0);
if(value < 0) {
--d;
*d = '-';
}
int len = end(buffer) - d;
if(os.rdbuf()->sputn(d, len) != len) {
os.setstate(ios_base::badbit);
}
}
return os;
}
istream &operator>>(istream &is, __int128_t &value)
{
string in;
is >> in;
value = 0;
for(const char &c : in) {
if('0' <= c && c <= '9') value = 10 * value + (c - '0');
}
if(in[0] == '-') value *= -1;
return is;
}
int main()
{
__int128_t A, B, C;
cin >> A >> B >> C;
__int128_t low = 0, high = 1LL << 62;
while(high - low > 1) {
auto mid = (low + high) / 2;
auto money = mid / A * B + mid - mid / A;
if(money >= C) high = mid;
else low = mid;
}
cout << high << endl;
return (0);
}
ei1333333