题目描述
过年了,小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值如何设我还没有想法。如果说有人看到这个题有什么想法或者我有什么地方想的不对欢迎留言告诉我,跪谢。还有不明白的地方,故没有改进的编程实现。如想清楚后续会更新的。