zoukankan      html  css  js  c++  java
  • 经典智力题:拿球问题

    拿球问题

     问题描述:假设排列着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个球。
  • 相关阅读:
    221. 最大正方形
    9. 回文数
    2. 两数相加
    1. 两数之和
    HDU 1864 最大报销额
    47 java包打成本地maven
    46 数组中的元素进行位置交换
    5 docker安装kibana
    45 vue图片放大预览
    4 docker中安装es
  • 原文地址:https://www.cnblogs.com/ljmatlight/p/14150805.html
Copyright © 2011-2022 走看看