关于一道简单的智力题
来源:互联网 发布:js 数组去掉最后一个 编辑:程序博客网 时间:2024/05/02 04:26
有幸遇到了一些智力题。
题目1(限时一分钟):
袋子里有若干个球,每次拿出其中的一半再放回一个球,一共这样做了489次,袋中,还有2个球,问:原来袋中有多少个球?
答:
第一次: n/2+1
第二次:(n/2+1)/2+1 =n/2^2+1/2+1
.
.
.
第i次: n/2^i+1/2^(i-1)+1/2^(i-2)+...+1/2+1 (第二项到1为比例为1/2的等比数列)
n/2^i+1/2^i-1+1/2^i-2+...+1/2+1=n/2^i + (1-1/2^i)/(1-1/2)=n/2^i+2-1/2^(i-1)=2 =》n/2^i=1/2^(i-1) s=>n=2
题目2(限时一分钟) :
袋子里有若干个球,每次拿出其中的一半再放回一个球,一共这样做了5次,袋中还有3个球,问:原来袋中有多少个球?
n/2^i+2-1/2^(i-1)=3 => n=2^i+2=> n=34
程序:
public class Test {/** * 获取原始总数量 * @param times 取出次数 * @param remainCnt 最后剩余数量 * @return */public int getCnt(int times,int remainCnt){int count=remainCnt; if(times==0||remainCnt==0){ return 0;}for(int i=0;i<times;i++){count=(count-1)*2;}return count;}public static void main(String[] args){Test t=new Test();int cnt=t.getCnt(485,2); // 取出485次,剩2个int cnt2=t.getCnt(5,3); // 取出5次,剩余3个 System.out.println(cnt);//输出结果是 2System.out.println(cnt2);//输出结果是,答案34 }}
【2016 -12 -18 comment 】:
袋子里有 T 个球,每次拿出其中的一半再放回一个球,一共这样做了n次,袋中还有K个球,问:原来袋中有T 是多少?
总结: T=(K-2)* 2^n +2
T :原来球的总数
K:剩余球的数量
n: 操作次数
- 关于一道简单的智力题
- 关于一道“智力题”的探讨
- 关于套套:最近流行的一道智力题
- 关于一道“智力题”的探讨(续)
- 一道小小的智力题
- 一道古老的智力题
- 一道古老的智力题
- 一道有争议的智力题
- 一道智力题的数学解
- 一道智力题的数学解
- 一道智力题的数学解
- 一道智力题的数学解
- 一道智力题的数学解
- 一道智力题的数学解
- 一道智力题的数学解
- 一道智力题的数学解
- 一道智力题的数学解
- 一道智力题引发的思考
- crackme itoa atoi 等函数汇编
- word2003中自动编号的使用和取消
- CF->CodeForces 137A
- Qt核心剖析:moc
- Global.asax 文件是什么
- 关于一道简单的智力题
- CF->CodeForces 137B
- C++快速学习之旅——C++和java的编译区别
- hdu 4055 2011 Asia Dalian Regional Contest
- CF->CodeForces 137C
- cocos2dx搭建android环境记录
- java泛型详解
- 黑马程序员_<<享元模式>>
- fatal error C1859 意外的预编译头错误,只需重新运行编译器