• 经典智力题:拿球问题


    拿球问题

     问题描述:假设排列着100个乒乓球,由两个人轮流拿球装入口袋,能拿到第100个乒乓球的人为胜利者。
     条件是:每次拿球者至少要拿1个,但最多不能超过5个,
     问:如果你是最先拿球的人,你该拿几个?以后怎么拿就能保证你能得到第100个乒乓球?
    
    要想拿到第100个球,那么在上一轮的拿球中,就必须拿到第94个球;
    要想拿到第94个球,那么在上一轮的拿球中,就必须拿到第88个球;
    要想拿到第88个球,那么在上一轮的拿球中,就必须拿到第82个球;
    …………
    由于100=6*16+4,那么由此推测,在第一轮拿球过程中,必须拿4个;
    在以后的拿球中必须保证拿到第10,16,……,4+6*a个球,其中1<a<=16.
    

    拿球问题变式

     问题描述:假设排列着100个乒乓球,由两个人轮流拿球装入口袋,能拿到第100个乒乓球的人为胜利者。
     条件是:每次拿球者至少要拿1个,A 只能拿1,2,3个,B只能拿1,2个,
     问:如果A是最先拿球的人,以后怎么拿就能保证A能得到第100个乒乓球?
    
    每回合拿球都是3的倍数,那么最后一回合时还有1个球,由于A先拿,所以A必能拿到第100个球。
  • 相关阅读:
    基于CentOS构建企业镜像站
    Linux命令——set 和 unset
    Bash基础——命令替换
    Bash基础——内置命令
    Linux命令——logger
    Linux命令——pgrep
    Linux下制作静态库 & 动态库
    理解ld-linux.so.2
    Bash基础——printf
    【问题】man手册如何查看区分printf命令和printf函数
  • 原文地址:https://www.cnblogs.com/ljmatlight/p/14150805.html
Copyright © 2020-2023  润新知