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;
}
                    
                
                
            
        
浙公网安备 33010602011771号