5猿の共有n桃、それらは均等に配ることができない。したがって、最初の猿は1桃をダンプし、桃の総数は5で割ることができ、最初の猿が彼の役割を果たしました。困惑を解決するために私のコードを調整しなさい
次に2番目の猿、-1桃は5で割り切れ、彼の役割を果たしました。 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を値するものではありません。 Code-in-the-Codeの投稿と比べて、CodeFarmerは2回良い試みをしました。しかし、それは上のより良い記述を使用することができます。 –
ええ、本当に恐ろしい世界的な使用のために、私はそれを投票しましたが、実際には良い質問であるので、後で私の心を変えました。問題は、それが私にunvortをさせないということです! –