5只猴子分享桃,他們不能平等分配。所以第一隻猴子傾倒一隻桃子,桃子總數可以被五分之一,第一隻猴子佔據他的一部分。調整我的代碼來解決一個難題
然後是第二隻猴子,-1桃,可以被5除以他的部分。直到第五隻猴子完成所有步驟。可能還有一些桃子還剩下。
給出符合此條件的桃子的最小數量。
Perl代碼1:
#!/usr/bin/perl -w
for $n (0..10000){ #this is basic idea but code is too messy !
if(($n-1) % 5 == 0){
$remain = 4/5 * ($n -1);
if(($remain - 1) % 5 == 0){
$remain = 4/5 * ($remain -1);
if(($remain - 1) % 5 == 0){
$remain = 4/5 * ($remain -1);
if(($remain - 1) % 5 == 0){
$remain = 4/5 * ($remain -1);
if(($remain - 1) % 5 == 0){
$remain = 4/5 * ($remain -1);
print "remain: $remain original: $n\n";
}
}
}
}
}
}
Perl代碼2:
sub doit($){
($n) = @_;
if(($n - 1) % 5 ==0){ #if can be distributed by 5 monkey
$n = ($n - 1) * 4/5; #commit distribute
return $n;
}else{
return -1; #fail
}
}
for $n (0..10000){ #restriction
$r = $n; #"recursively" find solution
$o = $n; #backup n
$count = 0;
for ($i = 0; $i < 5; $i++){ #assume there is 5 monkey, it can be changed
$r = doit($r);
if($r == -1){ #skip once fail
last;
}
$count++;
}
if($count == 5){ # if pass 5 test, then you found the number !
print "now ".$r."\n";
print "origin ".$o."\n";
}
}
我想削減一些代碼。但感覺很難。誰能幫忙?
首先你沒有使用嚴格和警告! –
這個問題不值得downvotes。與所有展示我的代碼帖子相比,CodeFarmer已經給了它兩次很好的嘗試。它可以在頂部使用更好的描述。 –
是的,我投了票,因爲一些非常可怕的全球使用,但後來改變了我的想法,因爲它實際上是一個很好的問題。問題是它不會讓我失望! –