В питоне есть хороший модуль itertools. В нём есть комбинаторные функции - перестановки, размещения и куча других классных вещей. Давай вызовем itertools.permutations, передадим туда твоё число как строку и длину перестановок - 3:
permutations('123', 3) --> 123 132 213 231 312 321
permutations('100', 3) --> 100 100 10 1 10 1
Очередная перестановка, формально, представляется в виде списка. Переведём в строку: ''.join(i)
...И уберём ведущие нули: .lstrip('0')
import itertools
for i in itertools.permutations(input(), 3):
print(''.join(i).lstrip('0'))
# Ввод:
# 100
# Вывод:
# 100
# 100
# 10
# 1
# 10
# 1
Условие задачи позволяет нам выводить повторяющиеся перестановки. Если нас это не устраивает, мы можем добавить проверку уникальности через set:
import itertools
checker = set()
for i in itertools.permutations(input(), 3):
s = ''.join(i).lstrip('0')
if not(s in checker):
print(s)
checker.add(s)
# Ввод:
# 100
# Вывод:
# 100
# 10
# 1
Поделитесь своими знаниями, ответьте на вопрос:
Ақпараттық қауіпсіздік Ақпаратты тек белгілі бір тұлғалар ғана өзгерте алатынына кепілдік беретің ақпараттың қасиетін анықта.ақпараттың тұтастығыақпараттың қолжетімділігіақпараттың ақпараттылығыақпараттың құпиялылығыАртқаТексеру
//Поскольку вы не указали стоимость бензина, но цену за 1 литр выставил сам. Если нужно изменить стоимость, то измените элемент(ы) массива markPrice, где каждый элемент (с отсчетом от единицы) - это цена за литр бензина соответствующая его индексу (1 - 92, 2 - 95 и так далее).
#include <iostream>
#include <locale>
using namespace std;
double GetPrice(double litr, double price, double discount)
{
double defaultPrice = litr * price;
return defaultPrice - defaultPrice * discount;
}
double GetDiscount (double litr, double mark)
{
double discount = 0;
if (litr > 10 && litr <= 20)
{
if (mark == 1)
discount = 0.05;
else if (mark == 2)
discount = 0.1;
}
else if (litr > 20)
{
if (mark == 1)
discount = 0.1;
else if (mark == 2)
discount = 0.2;
else
discount = 0.05;
}
return discount;
}
int main()
{
setlocale(LC_ALL, "Russian");
double markPrice[] = {42, 45, 46};
int mark;
double litr;
cout << "Выберите марку бензина (1 - 92; 2 - 95; 3 - дизель): ";
cin >> mark;
cout << "Введите количество литров: ";
cin >> litr;
if (mark >= 1 && mark <= 3)
cout << endl << "Стоимость заправки: " << GetPrice(litr, markPrice[mark - 1], GetDiscount(litr, mark));
else
cout << endl << "Ошибка! Введенная марка бензина не обнаружена!";
return 0;
}