😽
ABC146 C - Buy an Integerを理解し忘れないようにする
問題概要
高橋くんの所持金が
整数Nを購入するには、
方針
整数
実装案1 lower_boundを使って実装(❌)
1~10^9をvectorに入れて管理すると値追加の際にTLEになるので使えない。
実装案2 めぐる式2分探索を使って実装(⭕️)
- 回答コード
省略
int main()
{
ll a,b,x;
cin >> a >> b >> x;
ll left = 0,right = MI;
auto isOK = [&](ll n) -> bool {
ll d = to_string(n).size();
ll calc = a * n + b * d;
return calc <= x;
};
while (right - left > 1)
{
ll mid = (left + right)/2;
if (isOK(mid)) left = mid;
else right = mid;
}
cout << left << endl;
return 0;
}
Discussion