21350 质数与合数(菜鸡题解,大佬请忽略)

质数与合数

http://www.nowcoder.com/questionTerminal/361fd861b84848e2a3638060e5f5c4c6

菜鸡刚开始学习写题解,语言可能不太精炼,请大佬放过。
给你一堆石子,每次最多取k个,要求是先手取完素数,后手取完合数,但是两个人都是最优解知道最后结果,所以赢的人想每次尽量多拿,输的人想每次尽量少拿。
是个模拟题,先打个素数筛预处理下,把n以内包括n的素数存在一个数组里面,然后扫一遍这个素数数组,看有没有两个素数之间差值超过k+1,也就是先手会输的时候,把这个位置记录下来,取最大的下标。
先特判是否n<=2,2以下先手没办法取,直接输出0。然后分两大类,先手输和先手可以赢的情况,如果前面判断先手可以输,就把答案初始化为1,n定在第一次结束的素数,循环每次都是以后手开始的情况,每次把现在的n减去k,然后向上寻找第一个合数,用这个合数再去二分出下一次先手选的素数,n更新为先手现在的素数,一直重复循环直到二分后的结果到达先手输的下标位置。先手赢的情况就是每次尽可能往前取素数,直到现在的n与这个素数差不小于k,看是否超过,差值超过向上回溯到上一个素数,这是先手取完的结果,后手为保证少拿就每次-1,得到下次的结果,直到素数循环到3时后手失败结束循环。

全部评论
写的挺好的鸭,多写点唉
点赞 回复 分享
发布于 2020-08-02 16:00

相关推荐

Yushuu:你的确很厉害,但是有一个小问题:谁问你了?我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了😆
点赞 评论 收藏
分享
CrazyBucket:我今天下午也做梦在招聘会上面试一家小厂,给自己气笑了
点赞 评论 收藏
分享
3 收藏 评论
分享
牛客网
牛客企业服务