Задать вопрос
Jeff_Parker
@Jeff_Parker
Node JS junior

Как найти число через проценты, по заданным условиям?

Имеется 3 числа, составляющие в сумме некоторый процент от 100%, но также могут давать в сумме те же 100%
Например:
x1 = 35%
x2 = 20%
x3 = 15%
Сумма 70%
Есть ли возможность найти ответ, имея на руках только эти самые числа? Если же нет, то можете дать пояснение, чего не хватает для того, чтобы дать ответ?
Откуда растут ноги у данной задачи
Анализируя данные отчета о ранжировании товаров, мне была поставлена задача узнать примерное количество кликов, зная лишь процент кликов по 3-ем товарам628b7d37731dd500768325.jpeg


Старая версия задачи, составленная не корректно
spoiler
Есть 3 переменных, представляющие собой процент числа, как с помощью них узнать само число (ответом будет наименьшее число)?
К примеру:
Число 1 = 60%
Число 2 = 30%
Число 3 = 10%
Эти самые числа в сумме не всегда должны давать 100%
В данном случае, искомое число будет кратно 10, и скорее всего, в условиях моей задачи, правильным ответом будет 10, числа больше - 100, 1000 можно не брать во внимание

В ответ на комментарии: задача обстоит таким образом, как и описана, добавить нечего + обновил описание
  • Вопрос задан
  • 271 просмотр
Подписаться 1 Простой 15 комментариев
Решения вопроса 1
wataru
@wataru Куратор тега Математика
Разработчик на С++, экс-олимпиадник.
Раз вам надо такое целое, чтобы при домножении на все проценты получалось целое, то вам надо получить знаменатели всех дробей после сокращения и взять их наименьшее общее кратное. Это и будет ответ. При домножении на все дроби знаменатель сократится и останется только целое число.

В примере:

60/100 = 3/5
30/100 = 3/10
10/100 = 1/10

Знаменатели 5,10 и 10. НОК(5, 10, 10) = 10.

Поскольку задача с процентами, то все знаменатели до сокращения - 100. После сокращения может быть только число с максимум двумя двойками и двумя пятерками. Поэтому можно чуть проще руками посчитать двойки и пятерки в знаменателях.

Пусть n2 равно 1, если есть число в процентах, не делящееся на 2, и равно 0 - иначе.
n4 - тоже для 4, n5, n25 - тоже для 5 и 25.

Тогда ответ 2^(n2+n4)*5^(n5+n25).

В примере есть число не делящееся на 4 (10 и 30), поэтому n4=1. Все четные - поэтому n2=0.
n5 = 0, потому что все делится на 5. n25=1 - все не делится на 25. Поэтому ответ 2^(0+1)*5^(0+1) = 2*5=10

edit:

Вы обновили вопрос - проценты у вас могут быть нецелые. Например 3.71%

Тогда забейте на 2 и 5 - проще через НОК считать. Опять же сократите дроби и возьмите знаменатели:
3.71% = 371/10000
3.72% = 372/10000 = 186/5000 = 93/2500
и т.д.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы