题目链接:51nod 1613 翻硬币

知乎上的理论解法http://www.zhihu.com/question/26570175/answer/33312310

本题精髓在于奇偶性讨论。

若 n 为奇数:

  • 若 k 为偶数 无解
  • 若 k 为奇数 p 为不小于 n/k 的最小奇数

若 n 为偶数:

  • 若 k为偶数,且
  • 若 k为奇数,且 p 为不小于 n/(n-k) 的最小偶数
  • 若 k为偶数,且 p 为不小于 n/k 的最小整数
  • 若 k为奇数,且 p 为不小于 n/k 的最小偶数
     #include<stdio.h>
    #include<math.h>
    int main(){
    int n, k, p;
    scanf("%d %d", &n, &k);
    if(n% ){
    if(k% == ) printf("-1\n");
    else{
    p = ceil(n * ./ k);
    if(p% == ) p++;
    printf("%d\n", p);
    }
    }
    else{
    if(n/ < k && k < n - && k% == )
    printf("3\n");
    else if(n/ < k && k <= n - && k% ){
    p = ceil(n * ./(n - k));
    if(p% ) p++;
    printf("%d\n", p);
    }
    else if(k <= n/ && k% == ){
    p = ceil(n * ./ k);
    printf("%d\n", p);
    }
    else{
    p = ceil(n * ./ k);
    if(p% ) p++;
    printf("%d\n", p);
    }
    }
    return ;
    }

51nod 1613翻硬币的更多相关文章

  1. bzoj 3517: 翻硬币

    3517: 翻硬币 Time Limit: 1 Sec  Memory Limit: 128 MB Description 有一个n行n列的棋盘,每个格子上都有一个硬币,且n为偶数.每个硬币要么是正面 ...

  2. HDU 3537 (博弈 翻硬币) Daizhenyang's Coin

    可以参考Thomas S. Ferguson的<Game Theory>,网上的博客大多也是根据这个翻译过来的,第五章讲了很多关于翻硬币的博弈. 这种博弈属于Mock Turtles,它的 ...

  3. hdu 3537(博弈,翻硬币)

    题意:给定了每个正面朝上的硬币的位置,然后每次可以翻1,2,3枚硬币,并且最右边的硬币开始必须是正面朝上的. 分析: 约束条件6:每次可以翻动一个.二个或三个硬币.(Mock Turtles游戏) 初 ...

  4. 翻硬币|2013年蓝桥杯B组题解析第八题-fishers

    翻硬币 小明正在玩一个"翻硬币"的游戏. 桌上放着排成一排的若干硬币.我们用 * 表示正面,用 o 表示反面(是小写字母,不是零). 比如,可能情形是:oooooo 如果同时翻转左 ...

  5. PREV-6_蓝桥杯_翻硬币

    问题描述 小明正在玩一个“翻硬币”的游戏. 桌上放着排成一排的若干硬币.我们用 * 表示正面,用 o 表示反面(是小写字母,不是零). 比如,可能情形是:**oo***oooo 如果同时翻转左边的两个 ...

  6. HDU 3537 基础翻硬币模型 Mock Turtles 向NIM转化

    翻硬币游戏,任意选3个,最右边的一个必须是正面.不能操作者败. 基本模型..不太可能自己推 还是老实记下来吧..对于单个硬币的SG值为2x或2x+1,当该硬币的位置x,其二进制1的个数为偶数时,sg= ...

  7. hdu 3537 翻硬币 每次能翻1个 或2个 或3个

    N 枚硬币排成一排,有的正面朝上,有的反面朝上.我们从左开始对硬币按1 到N 编号. 第一,游戏者根据某些约束翻硬币,但他所翻动的硬币中,最右边那个硬币的必须是从正面翻到反面. 第二,谁不能翻谁输. ...

  8. 算法笔记_194:历届试题 翻硬币(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 小明正在玩一个“翻硬币”的游戏. 桌上放着排成一排的若干硬币.我们用 * 表示正面,用 o 表示反面(是小写字母,不是零). 比如,可能情 ...

  9. 蓝桥杯 历届试题 PREV-34 矩阵翻硬币

    历届试题 矩阵翻硬币   时间限制:1.0s   内存限制:256.0MB 问题描述 小明先把硬币摆成了一个 n 行 m 列的矩阵. 随后,小明对每一个硬币分别进行一次 Q 操作. 对第x行第y列的硬 ...

随机推荐

  1. word 与 endnote 反应慢的小技巧

    使用Word 2007/2010打开含有EndNote标注的文档时,Word反应速度会变慢,甚至出现“假死”状态,要等很长时间才能正常工作.问题出在Word的校正功能上,Word会对EndNote的标 ...

  2. git commit时message的问题

    1: 在执行git commit的时候,有两种办法为该commit添加message信息一种是git commit -m 'your message'另一种是git commit会打开commit-e ...

  3. Strategy策略模式

    策略模式定义了一系列算法,把它们一个个封装起来,并且使它们可相互替换.该模式可使得算法能独立于使用它的客户而变化.Strategy模式是行为模式,正因为他是一种行为模式,所以他不是用来解决类的实例化的 ...

  4. C/C++内存泄漏及检测 转

    C/C++内存泄漏及检测 2011-02-20 17:51 by 吴秦, 30189 阅读, 13 评论, 收藏, 编辑 “该死系统存在内存泄漏问题”,项目中由于各方面因素,总是有人抱怨存在内存泄漏, ...

  5. Redis配置文件之————redis.conf配置及说明

    基本设置 1. 备释当配置中需要配置内存大小时,可以使用 1k, 5GB, 4M 等类似的格式,其转换方式如下(不区分大小写):1k =< 1000 bytes1kb =< 1024 by ...

  6. Java中JTree的简单案例

    package ch12; import javax.swing.*; import javax.swing.tree.DefaultMutableTreeNode; /** * Created by ...

  7. Python学习笔记8—语句

    条件语句 有的程序里写的是 /usr/bin Python,表示 Python 解释器在/usr/bin 里面.但是,如果写成 /usr/bin/env,则表示要通过系统搜索路径寻找 Python 解 ...

  8. Java源码初学_LinkedHashMap

    一.概述: LinkedHashMap是HashMap的子类,它的基本操作与HashMap相同,与之不同的是,它可以实现按照插入顺序进行排序.也可以通过在构造函数中指定参数,按照访问顺序排序(Link ...

  9. Android 高手进阶之自定义View,自定义属性(带进度的圆形进度条)

      Android 高手进阶(21)  版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请注明地址:http://blog.csdn.net/xiaanming/article/detail ...

  10. spring mvc获取request HttpServletRequest

    1.最简单的方式(注解法) 2. 直接的方法,参数中添加(response类似) package spittr.web; import static org.springframework.web.b ...