楼主: jillou娄
1745 8

[经济] [求助]如何在R软件里实现五猴分桃问题 [推广有奖]

  • 1关注
  • 0粉丝

大专生

70%

还不是VIP/贵宾

-

威望
0
论坛币
1 个
通用积分
1.0001
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
322 点
帖子
25
精华
0
在线时间
69 小时
注册时间
2013-10-17
最后登录
2019-5-9

楼主
jillou娄 发表于 2013-10-17 09:11:37 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
问题:五只猴子采得一堆桃,它们约定次日早起来分。半夜里,一只猴子偷偷起来,把桃均分成五堆后,发现还多一个,它吃了这桃子,拿走了其中一堆。第二只猴子醒来,又把桃子均分成五堆后,还是多了一个,它也吃了这个桃子,拿走了其中一堆。第三只,第四只,第五只猴子都依次如此做了。问分之前桃子数最少有多少个?第五个猴子拿走后还剩多少个?
提示:设第n只猴子拿走的桃子数为a(n),则有递推关系:
4×a(n) = 5×a(n + 1) + 1,n = 1, 2, 3, 4
    用搜索法找出满足递推关系的最少的桃子数。


新手入门,,,谢谢各位!!!





二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:r软件 新手入门 如何 软件

沙发
怪了怪 学生认证  发表于 2013-10-18 21:50:44
我来帮你一下吧,能跑出结果,但不一定是写得最简洁漂亮的:

for (i in 1:10000){
  a <- seq(1:10000)
  a[i+1] <- (4*a[i]-1)/5
  a[i+2] <- (4*a[i+1]-1)/5
  a[i+3] <- (4*a[i+2]-1)/5
  a[i+4] <- (4*a[i+3]-1)/5
  if(a[i+1]%%1==0 & a[i+2]%%1==0 & a[i+3]%%1==0 & a[i+4]%%1==0) {
    print(i)
  }
}


搜索范围1:10000(其实1:1000就够了),你还可以自己改。结果的话,你运行之后就知道第一个猴子拿的桃子数,剩下的就简单了。总桃子数是3121,五猴分别拿了:624,499,399,319,255。最后还剩1020。

见怪不怪其怪自败

藤椅
怪了怪 学生认证  发表于 2013-10-18 22:18:55
改良一下,一次给出全部你要的结果:
store <- rep(0,7)
total <- 0
remainder <- 0
for (i in 1:1000){
  a <- seq(1:1000)
  a[i+1] <- (4*a[i]-1)/5
  a[i+2] <- (4*a[i+1]-1)/5
  a[i+3] <- (4*a[i+2]-1)/5
  a[i+4] <- (4*a[i+3]-1)/5
  if(a[i+1]%%1==0 & a[i+2]%%1==0 & a[i+3]%%1==0 & a[i+4]%%1==0) {
    print(i)
    total <- a[i]*5 + 1
    remainder <- total-a[i]-a[i+1]-a[i+2]-a[i+3]-a[i+4]-5
    store <- cbind(total,a[i],a[i+1],a[i+2],a[i+3],a[i+4],remainder)
  }

}
store



见怪不怪其怪自败

板凳
jillou娄 发表于 2013-10-20 22:12:35
怪了怪 发表于 2013-10-18 22:18
改良一下,一次给出全部你要的结果:
store
真厉害,非常感谢,认真学习。外加膜拜!

报纸
怪了怪 学生认证  发表于 2013-10-21 01:53:51
jillou娄 发表于 2013-10-20 22:12
真厉害,非常感谢,认真学习。外加膜拜!
不客气啊。很高兴能帮上忙。欢迎常来论坛逛逛。
见怪不怪其怪自败

地板
jillou娄 发表于 2013-10-21 12:01:03
怪了怪 发表于 2013-10-21 01:53
不客气啊。很高兴能帮上忙。欢迎常来论坛逛逛。
请问If条件语句里的命令具体是什么意思【 if(a[i+1]%%1==0 & a[i+2]%%1==0 & a[i+3]%%1==0 & a[i+4]%%1==0)】,是满足a[i+n]项是整数就执行if条件下的语句????那我改成 if(is.integer(a[i+1]) & is.integer(a[i+2]) &is.integer(a[i+3]) & is.integer(a[i+4]))后为何无效?新手入门,许多东西不了解,希望赐教。

7
怪了怪 学生认证  发表于 2013-10-21 23:09:15
jillou娄 发表于 2013-10-21 12:01
请问If条件语句里的命令具体是什么意思【 if(a%%1==0 & a%%1==0 & a%%1==0 & a%%1==0)】,是满足a项是整数 ...
你可以查看一下R中关于“is.integer"的help文档:
is.integer returns TRUE or FALSE depending on whether its argument is of integer type or not

is.integer(x) does not test if x contains integer numbers!


在我写的Code中,if后面的语句就是你理解的意思,如果是整数就执行后面的命令。
多利用help("is.integer")这种命令来查看帮助文档,是学习R的好方法。
见怪不怪其怪自败

8
怪了怪 学生认证  发表于 2013-10-21 23:23:28
jillou娄 发表于 2013-10-21 12:01
请问If条件语句里的命令具体是什么意思【 if(a%%1==0 & a%%1==0 & a%%1==0 & a%%1==0)】,是满足a项是整数 ...
is.integer shows the internal representation in R.
你可以比较:
> is.integer(10)
[1] FALSE

但是:
> is.integer(10L)
[1] TRUE

第一句中的10,我们认为是整数,但R认为不是。
第二句中,加个L,强调10是整数,就是True了。
见怪不怪其怪自败

9
jillou娄 发表于 2013-10-22 22:56:10
怪了怪 发表于 2013-10-21 23:23
is.integer shows the internal representation in R.
你可以比较:
> is.integer(10)
我也自己操作了一下,把它用repeat和break改良了一下,谢谢你~~~~对新手帮助很大。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-30 21:09