| Ответ 009 на задачу N 19.
С условиями задачи можно ознакомится по ссылке.
<?php
//сортировка 3 цифр и запись их в строку
function arrstr($x, $y, $z){
$ar[]=$x;
$ar[]=$y;
$ar[]=$z;
sort($ar);
return($ar[0].$ar[1].$ar[2]);
}
//поиск комбинаций для представления числа, образующего сумму X+Y+Z
function search($x,$y,$z, &$arr){
$arr[]= arrstr($x, $y, $z);
while ($x > 0 and $z < 9){
$arr[]= arrstr($x, $y, $z);
$a=$x;
$b=$y;
$c=$z;
while ($a > 0 and $b < 9){
$arr[]= arrstr(--$a, ++$b, $c);
}
$a=$x;
$b=$y;
$c=$z;
while ($b > 0 and $c < 9){
$arr[]= arrstr($a, --$b, ++$c);
}
--$x;
++$z;
}
}
//разбивка числа M на комбинацию в виде X Y Z
function start($m, &$x, &$y, &$z){
if ($m > 9){
if ($m-9 > 9){
$x= 9;
$y= 9;
$z= $m-18;
}
else{
$x= 9;
$y= $m-9;
$z= 0;
}
}
else{
$x= $m;
$y= 0;
$z= 0;
}
}
//подсчет кол-ва цифр в числе
function numcount($str){
for ($i=0; $i<=2; $i++){
$a[$i]=substr($str, $i, 1);
}
$a=array_unique($a);
return(count($a));
}
//Сумма цифр в последовательности 000..999 равна 0..27.
//Если вычислить количество уникальных последовательностей
//которыми можно представить конкретное m, то в зависимости от количества
//уникальных цифр в одной последовательности (n) можно сказать:
//при n=1 к-во комбинаций = 1
//при n=2 к-во комбинаций = 3
//при n=3 к-во комбинаций = 6
//От сюда, к-во щасливых = сумме всех комбинаций в квадрате минус к-во симметрич.,
//к-во симметричных равно к-ву комбинаций.
for ($m=0; $m<=27; $m++){
start($m, $x, $y, $z);
$a= array();
search($x,$y,$z, $a);
search($x,$z,$y, $a);
search($y,$x,$z, $a);
search($y,$z,$x, $a);
search($z,$x,$y, $a);
search($z,$y,$x, $a);
$a=array_unique($a);
$lucky=0;
$simm=0;
foreach ($a as $str){
$n = numcount($str);
if ($n == 1)
$simm += 1;
if ($n == 2)
$simm += 3;
if ($n == 3)
$simm += 6;
}
$lucky = pow($simm,2) - $simm;
$coast += $lucky*3 + $simm*10;
echo 'm='.$m.' count='.count($a).' ';
echo ' lucky= '.$lucky;
echo ' simm= '.$simm;
echo ' coast= '.$coast.'<br />';
}
echo "общая сумма от продажи = ".$coast;
//Сумма от продажи всех билетов составила 172756. Время на продажу
//999 999 билетов составит 10 мес При продаже 100 000 билетов в мес.
//Соответственно фирма понесет убытки (при затратах 20000 в мес) или я че-то не понял :-))))
//P.S. в условии сказано: "Доход с одного счастливого билета..", т.е. бизнес заведемо
//доходный?? Я считал 3 и 10 руб как цена билетов, а не доход. Если это
//доход, то 172756 это доход, а не сумма от продажи.
?>
|
http://www.softtime.ru/info/task.php?id_article=101 | |