京东校招编程题——小熊分苹果

刚做完京东校招在线笔试,第一道编程题居然没做出来,开始时没想到关键点还以为题目出错了,浪费了很多时间,郁闷……

题目如下:

N(1<N<9)只熊分一堆苹果,第一只熊(叫小东鄙视)把苹果平均分成N分,刚好多出一个,扔掉多出的那个并取走一份,后面每只熊以此类推。

问苹果最少多少个。


题目的关键点在于每只熊取走后剩下的苹果数是(N-1)的倍数,取之前苹果数%N==1,采用逆向思维,设最后一只熊取走后剩下m个苹果,从初始值

为N-1的情况开始尝试,根据分配原则逆向推N步,假如逆推过程中出现不符合条件的数,则放弃逆推,增大m的初始值再次尝试,直到能成功逆推N步为止。

此时逆推得到的值便是最小值。

代码如下:

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		
		Scanner sca = new Scanner(System.in);
		while(sca.hasNextInt()){
			int n = sca.nextInt();
			int m = n - 1;
			int k = 1;
			while(true){
				int i = 0;
				for(i = 0; i < n; i++){
					if(m % (n - 1) != 0) break;
					m = m * n / (n - 1) + 1;
				}
				if(i != n){
					m = (++k) * (n - 1);
					continue;
				}
				break;
			}
			System.out.println(m);
		}
	}
}

这次笔试的教训是做题时需要保持冷静清晰的思维,还有不要随便怀疑题目的正确性,最重要的是,一定要找个安静的地方笔试!找个安静的地方笔试!

找个安静的地方笔试!重要的事情说三遍!旁边要是有几个逗比室友在吵吵闹闹看动画片,你再牛逼也别想发挥好!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值