分礼物问题—丛林鸟

题目描述
  过年了,小sang和小for收到了moa送来的一大堆胖胖的丛林鸟,可是怎么分呢?
  
  他们玩了个游戏:
  
  先将从丛林鸟分成两份
  
  每人每次任选一份,拿出两K只丛林鸟,拿掉K只放到别处(不放在任何一份中),另外K只放到另外一份里面。
  
  无法操作的一方游戏算输,赢的一方可以独得全部的丛林鸟。
  
  每次都是小for开始操作。
  
  总的来说,不明白为什么这么多的公司的题目,说的都这么不清不楚的,题意都需要人靠着常识去猜测才行,真的希望可以找个语义表达清楚的人来出题

输入描述

两个数 a b 代表两份的数目
(0<=a,b<=10^18)

输出描述

如果小sang赢就输出字符串:sang
如果小for赢就输出字符串:for

输入样例
2 2

输出样例
sang

`讲真,对这个题目,我的了解也有些问题,有些不知道自己的想法对不对,一开始我想的是,这是一个有规律的分配,结束条件是没有办法取出偶数个数(即当其中一个变成1时停止)。所以我想的是中间的数不会影响他的操作,所以我用了递减。然后先达到1的人输。

import java.util.Scanner;

public class test {

    //额,这个错误的逻辑有50的通过率,因为时间原因我没有仔细的探究,
    //在结束机试后我有分情况想了很多,但是苦于没有办法编程验证了
    public static void main(String []args) {
        Scanner scan = new Scanner(System.in);
        int a = scan.nextInt();
        int b = scan.nextInt();

        for(int i=0;;i++){
            if (b==1){
                System.out.println("sang");
                break;
            }
            if(a==1){
                System.out.println("for");
                break;
            }
            a--;
            b--;
        }
    }

}

首先,两堆的个数是自己规定的,所以,假使一种情况,2和100,第一个人只能拿出两个,然后自己就没了,第二个人也拿出两个,那么第一个人手中变成只剩一个,无法继续。这个是类似于我的逻辑。
  
  换个角度。加入设的k是24,那个100的可以操作,但是2的那一堆,无论是先后,都没有办法进行操作。这一切都是基于K是一个定值的前提下,即第一次设好后就不再变化,否则的话就没有办法判断了
  
  所以说,K值是基于第一操作的人给出的,一定不会大于他自身最大偶数的一个值。
  
  这样的话,结束条件就变成了数值比2K小的停止操作。

但是对于k值如何设我还没有想法。如果说有人看到这个题有什么想法或者我有什么地方想的不对欢迎留言告诉我,跪谢。还有不明白的地方,故没有改进的编程实现。如想清楚后续会更新的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值