[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Разделить число на n частей
Dante5
как разделить число к примеру H = 34950 на N чисел где N=69 ?
чтобы в среднем получилось
1 - М=10000
2 - М=5000
3 - М= 3000
4 - М= 2500
5 - М= 1000
6…8 - М=750
9…13 - М=500
14….24 -М= 300
25….42 - М=150
43….69 - М=100
Чтобы все это в сумме было 34 950


H = 34950 и N=69 и если эти значения будут манятся то и сумму будут разные минимальная сумма М=50
sergeiss
Такое ощущение, что это задача из какой-то контрольной работы. Да еще и с совершенно неочевидным алгоритмом.

Dante5, так что надо сделать, какой вообще алгоритм? Из твоего описания не понятно, откуда берутся все эти числа. Почему именно такие. Почему некоторых чисел по одному, а других по несколько.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
AllesKlar
Студент халявщик.
выкладывай наработки, мы поможем wink.gif

_____________
[продано копирайтерам]
Dante5
допустим есть некий призовой фонд который должны разделить некое количество человек надо согласно вы деленной суме к примеру 34950 поделить на 69 челове 69 место не должно быть меньше 50 количество человек может быть разное сумма на кадый приз изаних будет постоянно разная то есть необходимо поделить 34950 на количество человек минимально 50 бал. самые последние места чем выше место тем выше получает баллов както так но в сумме должно поучится ровно сумма фонда
sergeiss
"Казнить нельзя помиловать" (с)

Запятые и точки расставь, что ли... А то нифига не понятно.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Dante5
Допустим, есть некий призовой фонд, который должно разделить некое количество человек. Надо согласно выделенной сумме, к примеру 34950, поделить на 69 человек. Из 69 мест приз не должен быть меньше 50. Количество человек может быть разное. Сумма на каждый приз будет постоянно разная.


 ! 

М
По мере возможности перевёл на русский язык. Хотя за точность смысла не отвечаю.
Bezdna
Dante5
Вот что нашол но немного не так работает
$x = 34950; // само число
$chast = 69 ;//Чел.
for ($i = 1; $i < $chast; $i++)
{
$temp[$i] = $x - rand(1, $x);
$x = $x - $temp[$i];
}
$temp[$chast] = $x;
print_r($temp);


вот результат работы скрипа

Array ( [1] => 32084 [2] => 844 [3] => 843 [4] => 371 [5] => 305 [6] => 191 [7] => 12 [8] => 139 [9] => 67 [10] => 65 [11] => 16 [12] => 7 [13] => 4 [14] => 0 [15] => 0 [16] => 0 [17] => 1 [18] => 0 [19] => 0 [20] => 0 [21] => 0 [22] => 0 [23] => 0 [24] => 0 [25] => 0 [26] => 0 [27] => 0 [28] => 0 [29] => 0 [30] => 0 [31] => 0 [32] => 0 [33] => 0 [34] => 0 [35] => 0 [36] => 0 [37] => 0 [38] => 0 [39] => 0 [40] => 0 [41] => 0 [42] => 0 [43] => 0 [44] => 0 [45] => 0 [46] => 0 [47] => 0 [48] => 0 [49] => 0 [50] => 0 [51] => 0 [52] => 0 [53] => 0 [54] => 0 [55] => 0 [56] => 0 [57] => 0 [58] => 0 [59] => 0 [60] => 0 [61] => 0 [62] => 0 [63] => 0 [64] => 0 [65] => 0 [66] => 0 [67] => 0 [68] => 0 [69] => 1 )
а надо что бы в Array

[1] =>10000
[2] => 5000
[3] => 3000
[4] => 2500
[5 ] =>1000
[6…8] =>750
[9…13] =>500
[14….24] => 300
[25….42] =>150
[43….69 ] =>100
Hello
Dante5, для начала попробуй решить первый шаг итерации.
Как будет выглядеть код, который для чисел
$x = 34950; // само число
$chast = 69 ;//Чел.

будет возвращать 10000?
и что этот код будет возвращать для
$x = 34950; // само число
$chast = 9 ;//Чел.


_____________
VPS от 5$, первые 2 месяца - бесплатно.
Bolik
а еще лучше реши эту задачу на листике бумаги, а алгоритм потом составишь за 10 мин., поверь.
sergeiss
Цитата (Bolik @ 26.01.2015 - 12:06)
а еще лучше реши эту задачу на листике бумаги, а алгоритм потом составишь за 10 мин.,

Так "реши на листике бумаги" это и есть составление алгоритма smile.gif И, как я понял, у ТС проблема как раз с этим. Он сам не понимает до конца, что же ему нужно сделать. И поэтому не может толком объяснить ничего.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Michael
Dante5, проблема классическая, гугли по запросу: алгоритм разложения числа на слагаемые

Плюс твой случай более сложный если надо сделать "красивое" разбиение, годное как суммы призов.

_____________
There never was a struggle in the soul of a good man that was not hard
Dante5
Это должно получиться своего рода лотерея.
Пользователь берет билет тратя на него свой рейтинг .
Допустим 50 рейтинга один билет .
На протяжении 7 дней пользователи берут лотерее и их очки рейтинга собираются в одну сумму .по истечении 7 дней состоится розыгрыш .
10% пользователей разделят собранные очки рейтинга .
Собранные очки рейтинга необходимо поделить между пользователям
Не ровными часами от большего к меньшему, наверно в процентном эквиваленте .
И чтобы этим распределением можно было управлять .

Пользователей обменявшее свой рейтинг на биле может быть 10 и 1000 и больше не фиксированное число .значит количество призовых мест всегда будет разная.

Общая сумма собранного рейтинга тоже не фиксированная сумма. Значит, сумма распределения на призовые места тоже будут разные.

Как это распределить между пользователи не ровными частями
1 место больше всех

Последние к примеру 50 и их получат несколько пользователей

Это приведено как пример [1…69] не фиксировано может быть даже [1….3]

Чтобы вы не зацикливались на этом
[1] =>10000 [2] => 5000 [3] => 3000 [4] => 2500 [5 ] =>1000 [6…8] =>750 [9…13] =>500 [14….24] => 300 [25….42] =>150 [43….69 ] =>100
напишу по другому
69 - это 10% от всех пользователей кто взял билет.
34950 - это сумма всех балов рейтинга что потратили на билеты.
34950 делим на не ровные части между пользователями

Даже не знаю как вам еще объяснить

Добавлено спустя 1 минуту 6 секунд:
единствено что нашол это
$x = 34950; // само число
$chast = 69 ;//Чел.
for ($i = 1; $i < $chast; $i++)
{
$temp[$i] = $x - rand(1, $x);
$x = $x - $temp[$i];
}
$temp[$chast] = $x;
print_r($temp);

не не то
tas777
"количество призовых мест всегда будет разная." Если я все правильно прочитал, то как раз таки количество призовых мест у тебя будет всегда постоянное 69 призовых мест, а вот количество пользователей, попадающих по категории приза разное. Всего мест у тебя 69. первые пять могут занять только по одному пользователю?
1 - М=10000
2 - М=5000
3 - М= 3000
4 - М= 2500
5 - М= 1000

6…8 - М=750 (три человека)
9…13 - М=500 (пять человек)
14….24 -М= 300(11 человек)
25….42 - М=150(18 человек)
43….69 - М=100(27 человек)
Итого 69 человек?

Сделай как в турнире по покеру,
1-е место один человек
2-е место поделят два человека
3-е место три человека
И отведи на эти призовые места скажем 50% от всей суммы

Остальные 50% суммы разбей на свое усмотрение в любом процентном соотношении. Таким образом ты определишь сумму выигрыша для определенных мест.
Второй алгоритм это уже определение сколько пользователей, в зависимости от общего числа играющих, попадет под то или иное призовое место. Для облегчения задачи сделай ограничение что в розыгрыше могут принимать участие не меньше 69 пользователей.

Напиши каким образом определяется победитель? По набранным баллам или как-то еще?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.