黑马程序员技术交流社区

标题: 问题:筐子里有多少鸡蛋? [打印本页]

作者: 1871037345    时间: 2016-5-17 09:04
标题: 问题:筐子里有多少鸡蛋?
本帖最后由 1871037345 于 2016-5-17 23:42 编辑

一次拿一个,正好拿完,
一次拿两个,剩余一个,
一次拿三个,正好拿完,
一次拿四个,剩余一个,
一次拿五个,剩余一个,
一次拿六个,剩余三个,
一次拿七个,正好拿完,
一次拿八个,剩余一个,
一次拿九个,正好拿完,
作者: CressJewel    时间: 2016-5-17 11:01
先设有n个鸡蛋,n==0开始,使n自加,用n值分别用%对1到9进行求余运算,当满足以上条件时,输出n的值,否则就不存在了,我是这样想的。
作者: Turingchang    时间: 2016-5-17 18:35
CressJewel 发表于 2016-5-17 11:01
先设有n个鸡蛋,n==0开始,使n自加,用n值分别用%对1到9进行求余运算,当满足以上条件时,输出n的值,否则 ...

可以设为9的倍数.......更快一些......
作者: 1871037345    时间: 2016-5-17 23:46
Turingchang 发表于 2016-5-17 18:35
可以设为9的倍数.......更快一些......

那请问 7  怎么办,
作者: 1871037345    时间: 2016-5-17 23:51
CressJewel 发表于 2016-5-17 11:01
先设有n个鸡蛋,n==0开始,使n自加,用n值分别用%对1到9进行求余运算,当满足以上条件时,输出n的值,否则 ...

首先这样想是对的,但是你忽略了一点,你的循环什么时候结束。
你的想法是最直接的做法,还有一种办法,就是对其中的几个特殊条件进行分析,然后得出一些结论,根据结论去得到一个数,再拿不特殊的条件进行验证,如此循环,当然考虑到实际情况,一筐子鸡蛋,循环限定在1000以内已经很大了
作者: CressJewel    时间: 2016-5-20 19:53
1871037345 发表于 2016-5-17 23:46
那请问 7  怎么办,

我想他的意思应该是先判断是否是9的倍数吧,这样确实可以先排除一部分的数。
作者: 1871037345    时间: 2016-5-20 20:24
我的另一种思路是这样的,请多多赐教:
//  一筐鸡蛋
//一次拿一个,正好拿完,
//一次拿两个,剩余一个,  //说明为奇数
//一次拿三个,正好拿完,  //说明是3的倍数
//一次拿四个,剩余一个,
//一次拿五个,剩余一个,  //说明个位数是 1 或者 6,6是偶数可排除,
//一次拿六个,剩余三个,
//一次拿七个,正好拿完,  //说明是7的倍数
//一次拿八个,剩余一个,
//一次拿九个,正好拿完,  //说明是9的倍数

//由此可得这个数是 7 和 9 的公倍数(最小公倍数为63),且为 奇数,个位数是 1;
//因个位数为1,所以 只能是 63 * (7 + 40 * k),且k非负整数
//即符合条件的数是 63 * (7 + 40 * k),且k非负整数,化简之后是 2250k +441


作者: 1871037345    时间: 2016-5-20 20:25
CressJewel 发表于 2016-5-20 19:53
我想他的意思应该是先判断是否是9的倍数吧,这样确实可以先排除一部分的数。 ...


我的另一种思路是这样的,请多多赐教:
//  一筐鸡蛋
//一次拿一个,正好拿完,
//一次拿两个,剩余一个,  //说明为奇数
//一次拿三个,正好拿完,  //说明是3的倍数
//一次拿四个,剩余一个,
//一次拿五个,剩余一个,  //说明个位数是 1 或者 6,6是偶数可排除,
//一次拿六个,剩余三个,
//一次拿七个,正好拿完,  //说明是7的倍数
//一次拿八个,剩余一个,
//一次拿九个,正好拿完,  //说明是9的倍数

//由此可得这个数是 7 和 9 的公倍数(最小公倍数为63),且为 奇数,个位数是 1;
//因个位数为1,所以 只能是 63 * (7 + 40 * k),且k非负整数
//即符合条件的数是 63 * (7 + 40 * k),且k非负整数,化简之后是 2250k +441
然后再判断一下是否符合其余的条件

作者: CressJewel    时间: 2016-5-22 09:01
1871037345 发表于 2016-5-20 20:25
我的另一种思路是这样的,请多多赐教://  一筐鸡蛋//一次拿一个,正好拿完,//一次拿两个,剩余一个,  ...

很棒,只是这种方法需要提前做一定的计算
作者: CressJewel    时间: 2016-5-22 09:03
1871037345 发表于 2016-5-20 20:25
我的另一种思路是这样的,请多多赐教://  一筐鸡蛋//一次拿一个,正好拿完,//一次拿两个,剩余一个,  ...

很棒,只是这种方法需要提前做一定的计算
作者: 1871037345    时间: 2016-5-22 10:32
是啊,通过观察,我们自己分析一下就可以省去很多麻烦,所以是我们人脑控制电脑,不然就惨了,
作者: 1871037345    时间: 2016-5-22 10:33
CressJewel 发表于 2016-5-22 09:03
很棒,只是这种方法需要提前做一定的计算

谢谢。
是啊,通过观察,我们自己分析一下就可以省去很多麻烦,所以是我们人脑控制电脑,不然就惨了,


作者: 之约    时间: 2016-5-22 11:05
思路清晰,很厉害
作者: 牛牛很牛    时间: 2016-5-22 21:09
运算思路很牛逼




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2