大花猫是捕鼠能手,每天要抓到不少老鼠。但它在吃老鼠以前,先要叫老鼠列队报数。第一批吃掉报单数的;剩下的老鼠重新报数。

第二批,花猫仍吃掉报单数的;第三批也是如此……最后剩下的一只老鼠可以被保留,与第二天抓来的老鼠一起重新排队报数。

后来,发生了一件极其有趣的事情。大花猫发现,一连好几天,最后被留下的总是一只机灵的小白鼠。

大花猫就问小白鼠:"你想了什么办法,能每天都留下呢?"小白鼠说:"尊敬的大花猫先生,

每天排队前我都先数一数你抓到了多少只老鼠,然后,我站在一个相应的位置,就可以留下来了。"

小白鼠每天应站在什么位置才能不被花猫吃掉。

编程实现:输入每天排队的老鼠的只数,输出小白鼠站的位置。

输入样例:

10

输出样例:

8

package week06;
import java.util.Scanner;

public class MousePosition {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        double mouseCount = scanner.nextInt();
        double position = findMousePosition(mouseCount);
        int ppp=(int)position;
        System.out.println(ppp);
        scanner.close();
    }
    public static double findMousePosition(double mouseCount) {
    	int i;
    	for(i=0;i<mouseCount;i++) {
    		if(Math.pow(2, i)>=mouseCount) {
    			return Math.pow(2,(i-1)) ;
    		}
    	}
    	return Math.pow(2, i);
    }
}

核心思想就是找2最大的那个的n次方 只有这样才能满足 最大次数的存活

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值