Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Найти все комбинации из 3 чисел, сумма которых равна заданному числу

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Interes
Отправлено: 11 Декабря, 2013 - 19:38:00
Post Id


Новичок


Покинул форум
Сообщений всего: 45
Дата рег-ции: Сент. 2012  


Помог: 0 раз(а)




На паскале видел подобное но там находит числа. А мне нужно комбинации цифр, сумма которых равна заданном числу.
Т.е. например сумма 4.
004, 040, 400, 013, 130 и т.д.
Есть мысли как?
 
 Top
Deonis
Отправлено: 11 Декабря, 2013 - 20:13:33
Post Id



Посетитель


Покинул форум
Сообщений всего: 298
Дата рег-ции: Нояб. 2009  


Помог: 14 раз(а)




Вы не указали сколько может быть символов, но для трех знаков, мжно так сделать:
PHP:
скопировать код в буфер обмена
  1. for($a=100; $a <= 999; $a++){
  2.     if(array_sum(str_split($a)) == 4){
  3.         echo $a.'<br>';
  4.     }
  5. }
 
 Top
EuGen Администратор
Отправлено: 11 Декабря, 2013 - 20:28:31
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




PHP:
скопировать код в буфер обмена
  1. function getCombinedSum($digits, $sum)
  2. {
  3.     if(!is_int($digits) || !is_int($sum) || $digits<1 || $sum<0)
  4.     {
  5.         throw new InvalidArgumentException('Invalid numeric format');
  6.     }
  7.     if($sum>9*$digits)
  8.     {
  9.         return [];
  10.     }
  11.     if($digits==1)
  12.     {
  13.         return [$sum];
  14.     }
  15.     $result = [];
  16.     for($digit=0; $digit<10 && $sum-$digit>0; $digit++)
  17.     {
  18.         foreach(getCombinedSum($digits-1, $sum-$digit) as $subsum)
  19.         {
  20.             $result[$digit.$subsum] = $digit.$subsum;
  21.             $result[$subsum.$digit] = $subsum.$digit;
  22.         }
  23.     }
  24.     return array_values($result);
  25. }


?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Interes
Отправлено: 12 Декабря, 2013 - 11:23:49
Post Id


Новичок


Покинул форум
Сообщений всего: 45
Дата рег-ции: Сент. 2012  


Помог: 0 раз(а)




EuGen, спасибо! То что нужно!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB