|
OFF: Разбить число на 10 неравных частей | ☑ | ||
---|---|---|---|---|
0
Маленький Вопросик
19.06.17
✎
16:16
|
Товарищи, подскажите алгоритм, чтобы разбить число (например 1000) на несколько неравных частей, например 17
Спасибо |
|||
1
Лефмихалыч
19.06.17
✎
16:16
|
%
* - = это все, что нужно |
|||
2
Лефмихалыч
19.06.17
✎
16:17
|
когда собеседование?
|
|||
3
Fragster
гуру
19.06.17
✎
16:18
|
делишь нацело на 17, потом попарно к каждой части прибавляешь 1 и -1, 2 и -2 и т.д. к последней части с "+" еще привинчиваешь остаток
|
|||
4
Fragster
гуру
19.06.17
✎
16:18
|
ну, или берешь части от 1 до 16 и потом остальное как 17 часть....
|
|||
5
Fragster
гуру
19.06.17
✎
16:19
|
16 раз отнимаешь рандомное число, проверяя, не было ли уже такого числа и не получится ли в результате число, которое уже было.
|
|||
6
Fragster
гуру
19.06.17
✎
16:20
|
находишь сумму чисел от 1 до 17, делишь на это число, потом результат умножаешь на 1, 2, 3 и т.п.
|
|||
7
Fragster
гуру
19.06.17
✎
16:21
|
а сколько способов нужно на зачет?
|
|||
8
Timon1405
19.06.17
✎
16:21
|
(7) 10 или 17 неравных способов
|
|||
9
Лефмихалыч
19.06.17
✎
16:21
|
(5) просто рандомное надо генерить в диапазоне от 1 до Х/17
|
|||
10
Йохохо
19.06.17
✎
16:23
|
(6) корень 17 степени и минимальное не занятое большее целое. Любая монотонная ункция, линия от 1 до 1000 по У для от 1 по 17 по Х
|
|||
11
Fragster
гуру
19.06.17
✎
16:25
|
в (4) части = числа
|
|||
12
Йохохо
19.06.17
✎
16:25
|
(10) ошибка, но понятно с учетом (6), надо сумму вычесь
|
|||
13
Михаил Козлов
19.06.17
✎
16:25
|
Пусть Xi - i-тое число. Тогда нужно найти все решения системы:
СУММА(Xi) = 1000 Xi<=Xi-1 Xi>=0 |
|||
14
Fragster
гуру
19.06.17
✎
16:26
|
вообще профессия программиста в том и состоит, чтобы разбить задачу на элементарные подзадачи
|
|||
15
Лефмихалыч
19.06.17
✎
16:26
|
(13) Xi<=Xi-1
так не бывает |
|||
16
Лефмихалыч
19.06.17
✎
16:27
|
при Xi>=0
|
|||
17
Timon1405
19.06.17
✎
16:27
|
вопрос на пятерку: а сколькими способами с точностью до перестановок это можно сделать
|
|||
18
Лефмихалыч
19.06.17
✎
16:28
|
да, вот - правильная картинка по этому поводу
![]() |
|||
19
Fragster
гуру
19.06.17
✎
16:28
|
(17) больше 1000 :)
|
|||
20
Fragster
гуру
19.06.17
✎
16:29
|
может больше 1000000, хз. тут математик нужен.
|
|||
21
Fragster
гуру
19.06.17
✎
16:30
|
вот еще хороший вопрос: почему в теме 10, а в (0) - 17?
|
|||
22
Михаил Козлов
19.06.17
✎
16:30
|
(15) Виноват: Xi<=X(i+1)-1
(17) Если пятерка тыр, то готов. |
|||
23
Timon1405
19.06.17
✎
16:32
|
(20) согласен) вопрос к программистам мы решили, а к математикам пофиг) аминь.
*насколько я помню вопрос про количество разбиений действительно довольно сложный |
|||
24
Дарлок
19.06.17
✎
16:32
|
явно кто-то слишком много смотрел фильм "Человек, который познал бесконечность"
|
|||
25
polosov
19.06.17
✎
16:34
|
||||
26
polosov
19.06.17
✎
16:36
|
||||
27
Garykom
гуру
19.06.17
✎
16:41
|
предлагаю через пропорцию...
1/17 2/17 3/17 ... 9/17 + 0.5 |
|||
28
Garykom
гуру
19.06.17
✎
16:42
|
(27) сорри
8/17 + 0.5 |
|||
29
Garykom
гуру
19.06.17
✎
16:44
|
(28) хотя не так, последнее число берем вычтя все предыдущие
|
|||
30
Garykom
гуру
19.06.17
✎
16:45
|
(26) Это слишком просто, "взять типовое решение" ))
|
|||
31
Йохохо
19.06.17
✎
16:50
|
(17) по индукции не очень и сложно
|
|||
32
Tatitutu
19.06.17
✎
16:55
|
Рез=0;
Итог=1000; Шаг=1; КолвоЧастей=17; для сч =Шаг по КолвоЧастей+2 цикл Рез=Рез+Сч; КонецЦикла; Рез=0; Если Рез <= Итог Тогда для сч =Шаг по КолвоЧастей-1 цикл Сообщить(Сч); Рез=Рез+Сч; КонецЦикла; Сообщить(Итог-Рез); КонецЕсли; РЕЗУЛЬТАТ: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 864 |
|||
33
Timon1405
19.06.17
✎
16:55
|
(31) по индукции от чего? условие что части должны быть неравны(читай попарно неравны) вашу индукцию поломает на корню
|
|||
34
Йохохо
19.06.17
✎
16:57
|
(33) база Сумма(1..17), потом + 1
|
|||
35
Serg_1960
19.06.17
✎
17:00
|
(0) Погугли на Мисте "распределить пропорционально". Я где-там давал алгоритм, учитывающий набегающую ошибку округление при делении на пропорции.
|
|||
36
Йохохо
19.06.17
✎
17:02
|
(34) пфф, так это вообще школьная формула)
|
|||
37
Timon1405
19.06.17
✎
17:03
|
(34) ничего не понятно. база: сумма (1..16)+864 - так?
Какое предположение индукции? какой шаг? |
|||
38
Михаил Козлов
19.06.17
✎
17:12
|
Из википедии:
Количество разбиений натурального числа n на k слагаемых удовлетворяет рекуррентной формуле: P(n,k)=P(n?1,k?1)+P(n?k,k) с начальными значениями: P(i,i) = 1 ? i ? N P(i,1) = 1 ? i ? N P(i,j) = 0 ? j > i. |
|||
39
Timon1405
19.06.17
✎
17:14
|
(38) не вижу условия различности слагаемых
|
|||
40
Михаил Козлов
19.06.17
✎
17:14
|
Что-то криво вышло:
P(n,k)=P(n-1,k-1)+P(n-k,k) с начальными значениями: P(i,i) = 1 для натурального i P(i,1) = 1 для натурального i P(i,j) = 0 для j>i. |
|||
41
Михаил Козлов
19.06.17
✎
17:16
|
(39) Согласен, поторопился. Но предложение (22) остается в силе.
|
|||
42
Winnie Buh
19.06.17
✎
17:17
|
(0) задачка из учебника какого класса и по какому предмету?
|
|||
43
polosov
19.06.17
✎
17:42
|
(42) Тритий класс церковно-приходской же.
|
|||
44
Маленький Вопросик
19.06.17
✎
18:05
|
товарищи, спасибо!
В итоге, какая функция? |
|||
45
lodger
19.06.17
✎
18:17
|
(44) Массив = РазбитьЧислоНаНеравныеЧасти(Х,У)
|
|||
46
mehfk
19.06.17
✎
18:25
|
Такой код должен подойти.
Запрос = Новый Запрос("ВЫБРАТЬ ССЫЛКА из Справоник.СотрудникиОрганизаци Где Где ДатаУвольнения = Датавремя(1,1,1) И Наименование Подобно ""%МаленькийВопросик%"""); Результат = Запрос.Выполнить(); Если Результат.Пустой() Тогда Возврат; КонецЕсли; Выборка = Результат.Выбарть(); Пока Выборка.Следующий() Цикл Док = Документы.УвольнениеИзОрганизаций.СоздатьДокумент(); Док.Дата = ТекущаяДата(); Док.Организация = Выборка.Организация; НоваяСтрока = Док.СотрудникиОрганизации.Добавить(); НоваяСтрока.Сотрудник = Выборка.Ссылка; НоваяСтрока.ФизЛицо = НоваяСтрока.Сотрудник.ФизЛицо; НоваяСтрока.ПричинаУвольнения = Справочники.ПричиныУвольнения.НайтиПоНаименованию("п. 3 ч. 1 ст. 81"); Док.Записать(РежимЗаписиДокумента.Проведение); КонецЦикла; |
|||
47
Dmitry77
19.06.17
✎
19:05
|
самое простое
послчисло = 1000; для и = 1 по 17-1 цикл //вместо 17 подставьте ваше число сообщить (и); послчисло - послчисло - и; конеццикла; сообщить (послчисло); |
|||
48
Dmitry77
19.06.17
✎
19:06
|
(47) послчисло = послчисло - и;
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |