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

Форум PHP

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Разбить сумму на числа ее составляющие?
 
 автор: iPhonesoft   (29.10.2007 в 16:30)   письмо автору
 
 

Привет (),

Вопрос состоит в том, как узнать числа, которые при их сложении образуют сумму этих чисел. Например:
1023
+1045
+1067
+2023
= 5158

Нужно узнать из суммы каких чисел состоит число 5158 (т.е. раскрутить 5185 в обратную сторону при выполнении определенных правил). При условии, что числа 1023, 1045, 1067, 2023 имеют следующую закономерность которая их образовывает:

Первые две цифры каждого числа (напр. 10, 20): двузначное четное число оканчивающееся на 0.
Следующая цифра каждого числа (напр. 2, 4, 6): однозначное четное число.
Последняя цифра каждого числа (напр. 3, 5, 7) однозначное нечетное число.

Более наглядно цифры выглядят так:
10.2.3
10.4.5
10.6.7
20.2.3

В ряду чисел не может быть совпадений, например невозможно чтобы была ситуация где первые 3 цифры числа одинаковы. Например: 10.2.3 и 10.2.7 являются ошибкой.

Помогите осмыслить все эти условия в коде! Никак нимогу понять с какой стороны подступиться к этой математической задаче. Спасибо за вашу помощь и идеи!

   
 
 автор: sim5   (29.10.2007 в 17:19)   письмо автору
 
   для: iPhonesoft   (29.10.2007 в 16:30)
 

1023 +1045 +1067 +2023 = 5158
2023 +1045 +1067 +1023 = 5158
1023 +2045 +1067 +1023 = 5158
--------
и как отгадать?)

   
 
 автор: iPhonesoft   (29.10.2007 в 17:24)   письмо автору
 
   для: sim5   (29.10.2007 в 17:19)
 

Как добиться хотя бы этого? Вариант 1023 +2045 +1067 +1023 = 5158 неверный! Используется два раза комбинация начинающаяся на 102.

(102)3 +2045 +1067 +(102)3 = 5158

   
 
 автор: sim5   (29.10.2007 в 17:29)   письмо автору
 
   для: iPhonesoft   (29.10.2007 в 17:24)
 

Это уже не получение искомых чисел будет, а подгонка результата под ответ. Начинайте тогда с младшего разряда и подбирайте из ряда чисел так чтобы "подогнать" под нужное, учитывая, что может быть пригодиться и перенос... и т.д..

   
 
 автор: iPhonesoft   (29.10.2007 в 17:32)   письмо автору
 
   для: sim5   (29.10.2007 в 17:29)
 

Вариант 1023 +2045 +1067 +1023 = 5158 неверный! Используется два раза комбинация начинающаяся на 102.

(102)3 +2045 +1067 +(102)3 = 5158

А первые два совершенно правильные, только числа в списке переставлены местами! Это и требуется реализовать.

   
 
 автор: sim5   (29.10.2007 в 17:37)   письмо автору
 
   для: iPhonesoft   (29.10.2007 в 17:32)
 

Ну может описать условия в матрице, а потом находить ее решения. А вот проверки всех условий, перебор...

   
 
 автор: iPhonesoft   (29.10.2007 в 17:42)   письмо автору
 
   для: sim5   (29.10.2007 в 17:37)
 

А можно об этом поподробнее? Как все это в коде закрутить пока даже ума не приложу....

   
 
 автор: sim5   (29.10.2007 в 17:55)   письмо автору
 
   для: iPhonesoft   (29.10.2007 в 17:42)
 

Мне что прочитать краткий курс математики? Я не Макаренко и на это не способен. :)
Тем более, я просто предпологаю, что можно так, а может и не прав, надо проверять, но мне даже мозги не охота напрягать над этой задачей. Если хотите сами это проверить - раздел "Линейная алгебра: векторные пространства; базисы; матрицы..."

   
 
 автор: iPhonesoft   (29.10.2007 в 17:58)   письмо автору
 
   для: sim5   (29.10.2007 в 17:55)
 

Спасибо за совет!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования