C. Sasha and the Casino

原题链接

题解

1.要确保任意回合赢回来的钱都要比之前下注的钱的总和要多
\(b_i\) 为第 \(i\) 回合下注的钱,则有 \(b_i·k>\sum_{j=1}^{i}b_j\)
则有 \(b_i\ge \left\lfloor \frac {\sum_{j=1}^{i-1}b_j}{k-1} \right\rfloor+1\)

为了尽可能地不把钱花光,选最小的 \(b_i\)

2.如果在下注过程中把钱花光了,输出no

code

#include<bits/stdc++.h>
using namespace std;
int k,x,a;
void solve()
{
    int sum=0;
    for(int i=1;i<=x+1;i++)
    {
        sum+=sum/(k-1)+1;
        if(sum>a)
        {
            puts("NO");
            return;
        }
    }
    puts("YES");
}
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        cin>>k>>x>>a;
        solve();
    }
    return 0;
}

posted @ 2024-03-28 22:04  纯粹的  阅读(19)  评论(0)    收藏  举报