Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ

Warning: Trying to access array offset on false in /home/u98739/softtime.ru/www/utils/currentforum.php on line 18

Warning: Trying to access array offset on false in /home/u98739/softtime.ru/www/utils/currentforum.php on line 19

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Ответ 009 на задачу N 19

Сообщения:  [1-2] 

 
 автор: buka   (14.08.2006 в 15:47)   письмо автору
 
   для: SoftTime   (13.08.2006 в 20:03)
 

Не пойму зачем такие сложности

   
 
 автор: SoftTime   (13.08.2006 в 20:03)   письмо автору
 
 

Ответ 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

   

Сообщения:  [1-2] 

Форум разработан IT-студией SoftTime