結果

問題 No.3643 Not a Bad Apple!!
コンテスト
ユーザー amesyu
提出日時 2026-08-25 15:43:14
言語 PyPy3
(7.3.17)
コンパイル:
pypy3 -mpy_compile _filename_
実行:
pypy3 _filename_
結果
AC  
実行時間 438 ms / 2,000 ms
+ 83µs
コード長 617 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 239 ms
コンパイル使用メモリ 96,228 KB
実行使用メモリ 84,992 KB
最終ジャッジ日時 2026-08-25 15:43:20
合計ジャッジ時間 5,732 ms
ジャッジサーバーID
(参考情報)
judge3_0 / judge1_0
このコードへのチャレンジ
(要ログイン)
サブタスク 配点 結果
サンプル 0 % AC * 1
小課題1 10 % AC * 2
小課題2 30 % AC * 10
小課題3 30 % AC * 15
小課題4 30 % AC * 31
合計 100 点
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

import math
# k 個食べられるかは、
# A = N - B として
# binom(A,k) / binom(N,k)*k
# binom(A,k) / (N binom(N-1,k-1))
# (N-k)! / (A-k)! / (k-1)
# A! / N!
# (N-x) * (A-x) / x * (x - 1)
T = int(input())
def f(x): return math.factorial(x)
def solve():
    N, B = map(int, input().split())
    A = N - B
    ok = 0
    ng = A
    # (A-x)(x+1) / (N-x)x は単調減少。1以下になるのはどこ?
    while ng - ok > 1:
        x = (ok + ng) >> 1
        if (A-x)*(x+1) >= (N-x)*x: ok = x
        else: ng = x
    # 100 0 で101 個食べようとして草。
    print(ng)

for _ in range(T):
    solve()
0