Группа из N бизнесменов имела по одному счету в банке "Успех". На каждом счете - не более 100 целых условных единиц (ЦУЕ). Особенность "УСПЕХА" - со счета можна снимать лишь всю сумму целиком. В продаже имеются товары, по одному каждого вида, цена самого дешевого - 1 ЦУЕ, каждый следующий - на 1 ЦУЕ дороже. Самый дорогой имеет цену, равную сумме всех имеющихся у бизнесменов средств. Сколько из этих товаров недоступны для покупки одному бизнесмену либо их группе, объединившей свои капиталы? Бизнесмены генетически не могут заплатить за товар больше его цены и вкладывать деньги в сделку частями.
Входные данные. В первой строке Вы вводите с клавиатуры число бизнесменов N (2<=N<=100), во второй строке далее - N чисел - сумма вкладов.
Выходные данные. Вы выводите на экран одно число - количество единиц товара, которые не могут быть куплены.
Python
Python. Решите пожалуйста задачу.
Если я правильно понял задачу, то вроде бы вот так получается
global num, rascenka, sena, nsena, nrascenka, nonum
nrascenka = 1
num = 1
nonum = 1
rascenka = 1
sena = 0
nsena = 0
def bisnesmens():
global KBis
KBis = int(input("Введите число бизнесменов: "))
if KBis > 100:
print("Количество бизнесменов не может быть больше 100")
bisnesmens()
if KBis < 2:
print("Количество бизнесменов не может быть меньше чем 2")
bisnesmens()
global WSum
WSum = int(input("Введите сумму вкладов: "))
if WSum // KBis > 100:
print("Ошибка сумма вклада одного бизнесмена не превышает 100 ЦУЕ")
bisnesmens()
else:
print("Данные введены верно. Ведётся расчёт...")
cena(WSum, num, rascenka, sena)
def setup(WSum, KBis, num, nonum):
nonum = nonum - num
print("Максимальная возможная сумма = 10000 ЦУЕ \n Имеющаяся сумма = " + str(WSum) + "\n Количество бизнесменов = " + str(KBis) + "\n Количество видов товаров которые могут быть приобретены = " + str(num) + "\n Количество видов товаров которые не могут быть приобретены = " + str(nonum))
bisnesmens()
def cena(WSum, num, rascenka, sena):
if rascenka < WSum:
sena = sena + 1
rascenka = rascenka + sena
num = num + 1
cena(WSum, num, rascenka, sena)
else:
ncena(WSum, num, nsena, nrascenka, nonum)
def ncena(WSum, num, nsena, nrascenka, nonum):
if nrascenka < 10000:
nsena = nsena + 1
nrascenka = nrascenka + nsena
nonum = nonum + 1
ncena(WSum, num, nsena, nrascenka, nonum)
else:
setup(WSum, KBis, num, nonum)
bisnesmens()
Сейчас залью исходник на яндекс диск, а то в майл ру отступы не ставятся
https://yadi.sk/d/LAuFaCAAWs2nAw
Это сам файл
global num, rascenka, sena, nsena, nrascenka, nonum
nrascenka = 1
num = 1
nonum = 1
rascenka = 1
sena = 0
nsena = 0
def bisnesmens():
global KBis
KBis = int(input("Введите число бизнесменов: "))
if KBis > 100:
print("Количество бизнесменов не может быть больше 100")
bisnesmens()
if KBis < 2:
print("Количество бизнесменов не может быть меньше чем 2")
bisnesmens()
global WSum
WSum = int(input("Введите сумму вкладов: "))
if WSum // KBis > 100:
print("Ошибка сумма вклада одного бизнесмена не превышает 100 ЦУЕ")
bisnesmens()
else:
print("Данные введены верно. Ведётся расчёт...")
cena(WSum, num, rascenka, sena)
def setup(WSum, KBis, num, nonum):
nonum = nonum - num
print("Максимальная возможная сумма = 10000 ЦУЕ \n Имеющаяся сумма = " + str(WSum) + "\n Количество бизнесменов = " + str(KBis) + "\n Количество видов товаров которые могут быть приобретены = " + str(num) + "\n Количество видов товаров которые не могут быть приобретены = " + str(nonum))
bisnesmens()
def cena(WSum, num, rascenka, sena):
if rascenka < WSum:
sena = sena + 1
rascenka = rascenka + sena
num = num + 1
cena(WSum, num, rascenka, sena)
else:
ncena(WSum, num, nsena, nrascenka, nonum)
def ncena(WSum, num, nsena, nrascenka, nonum):
if nrascenka < 10000:
nsena = nsena + 1
nrascenka = nrascenka + nsena
nonum = nonum + 1
ncena(WSum, num, nsena, nrascenka, nonum)
else:
setup(WSum, KBis, num, nonum)
bisnesmens()
Сейчас залью исходник на яндекс диск, а то в майл ру отступы не ставятся
https://yadi.sk/d/LAuFaCAAWs2nAw
Это сам файл
По-моему это задача о рюкзаке.
from timeit import default_timer as tm
from random import randint
A = [randint(1,100) for _ in range(100)]
#print(*A)
#N = int(input())
#A = list(map(int, input().split()))
st=tm()
S = sum(A)
F = [0]+[1]*S
for i in range(len(A)):
~~~~for j in range(S, A[i]-1, -1):
~~~~~~~~if F[j - A[i]] == 0:
~~~~~~~~~~~~F[j] = 0
print(sum(F))
print(tm()-st)
PS
Я предполагаю, что если Вы решаете подобные задачи, то для Вас не станет проблемой убрать лишнее.
from timeit import default_timer as tm
from random import randint
A = [randint(1,100) for _ in range(100)]
#print(*A)
#N = int(input())
#A = list(map(int, input().split()))
st=tm()
S = sum(A)
F = [0]+[1]*S
for i in range(len(A)):
~~~~for j in range(S, A[i]-1, -1):
~~~~~~~~if F[j - A[i]] == 0:
~~~~~~~~~~~~F[j] = 0
print(sum(F))
print(tm()-st)
PS
Я предполагаю, что если Вы решаете подобные задачи, то для Вас не станет проблемой убрать лишнее.
Похожие вопросы
- Решите, пожалуйста, задачу на Python
- Ещё одна задача на Python? Решить нужно через for
- Решить две задачи на питоне. Помогите пожалуйста
- Помогите пожалуйста задачей по Python.
- Задача 10. Игра «Компьютер угадывает число» язык кода Python помогите пожалуйста
- За 500 руб решите 6 задач python?
- Объясните пожалуйста задачу в Python!
- Решить проблемную задачу через Python
- Помогите задачу в python решить а то я чайник не понимаю, желательно с прояснением
- Python.Помогите пожалуйста!!! Очень тяжёлая задача!
Это сам файл