博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 2368 Buttons
阅读量:4339 次
发布时间:2019-06-07

本文共 843 字,大约阅读时间需要 2 分钟。

题目链接:

题意:巴什博奕,两人轮流从一堆中拿取按钮,最后一个拿完的赢。给出一个K,表示总共有K个按钮,然后求一个L,表示每次最多拿L个,使得后手赢。(L范围是2~K-1)若无则输出0,若有多个则输出最小的。

分析:巴什博奕公式为若K%(L+1)==0,则后手赢,因为后手可以一直维持这个必胜态,使得一轮里加起来拿的总数为l+1,最后总有的拿。又因为要求最小的,所以就是求K的大于2的最小因数,然后减去1;没有则输出0。(避免10,14类似情况)

代码:

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;#define INF 0x3f3f3f3ftypedef long long ll;#define Max(a,b) (a>b)?a:b#define lowbit(x) x&(-x)int main(){ int n; scanf("%d",&n); int sum=n; for(int i=3; i*i<=n; i++) { if(n%i==0) { sum=i; break; } } if(sum==n) { if(n%2==0&&n/2>2) sum/=2; } sum--; if(sum<2) sum=0; printf("%d\n",sum); }
View Code

 

转载于:https://www.cnblogs.com/wwdf/p/5781393.html

你可能感兴趣的文章
linear-gradient常用实现效果
查看>>
sql语言的一大类 DML 数据的操纵语言
查看>>
VMware黑屏解决方法
查看>>
JS中各种跳转解析
查看>>
JAVA 基础 / 第八课:面向对象 / JAVA类的方法与实例方法
查看>>
Ecust OJ
查看>>
P3384 【模板】树链剖分
查看>>
Thrift源码分析(二)-- 协议和编解码
查看>>
考勤系统之计算工作小时数
查看>>
4.1 分解条件式
查看>>
Equivalent Strings
查看>>
flume handler
查看>>
收藏其他博客园主写的代码,学习加自用。先表示感谢!!!
查看>>
H5 表单标签
查看>>
su 与 su - 区别
查看>>
C语言编程-9_4 字符统计
查看>>
在webconfig中写好连接后,在程序中如何调用?
查看>>
限制用户不能删除SharePoint列表中的条目(项目)
查看>>
feign调用spring clound eureka 注册中心服务
查看>>
ZT:Linux上安装JDK,最准确
查看>>