Codeforces Round 926 (Div. 2) C. Sasha and the Casino (Java)

Codeforces Round 926 (Div. 2) CC. Sasha and the Casino (Java)

比赛链接:Codeforces Round 926 (Div. 2)

C题传送门:C. Sasha and the Casino

题目:C. Sasha and the Casino

在这里插入图片描述
**Example **
input

9
2 1 7
2 1 1
2 3 15
3 3 6
4 4 5
5 4 7
4 88 1000000000
25 69 231
13 97 18806

output

YES            
NO
YES
NO
NO
YES
NO
NO
NO

分析:

只要证明下注可以赚钱,即可输出答案。

首先,我们需要明白赌场可以操控我们的输赢,但不能连输超过x次,即赌场可以让我们连续输x次,但第x+1次我们一定赢。

所以,每一次下注,我们需要保证:该次下注如果赢了,我们至少能够赚钱,即 总硬币>a。
sum:之前已经花的钱
now:该次最少下注的钱
sum + now < k * now
now * (k - 1) > sum
now = sum / (k - 1) +1

对于第1次下注,由于之前没有下注,默认sum = 1。
循环从第2次下注开始,第 x+1 次结束,如果下注的钱大于a,说明下注的钱不够,一定会输。
第2到x次下注我们假设赌场让我们输,则第x+1次我们必赢。

代码:

import java.util.*;

public class Main{
    public static void main(String[] args) {   
    	Scanner sc = new Scanner(System.in);
    	int tr = sc.nextInt();
    	while(tr-->0) {
    		int k = sc.nextInt();
    		int x = sc.nextInt();
    		long a = sc.nextLong();
    		boolean flag = true;
    		// 花费的钱,默认第一把输
    		long sum = 1;
    		for(int i = 2;i <=x+1;i++) {
    			// 打算付的钱
    			long now = sum/(k-1)+1;
    			sum += now;
    			if(sum > a) flag = false;
//    			System.out.printf("now sum:%d %d\n",now,sum);
    		}
    		if(flag) System.out.println("YES");
    		else System.out.println("NO");
    	}
    	sc.close();
    }
}
  • 20
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值