/*Дано трехзначное число. Найти сумму и произведение его цифр. Вывести число, полученное при прочтении исходного числа справа налево. В нем зачеркнули первую слева цифру и приписали ее справа. Вывести полученное число. В нем зачеркнули первую справа цифру и приписали ее слева. Вывести полученное число. Вывести число, полученное при перестановке цифр сотен и десятков исходного числа (например, 123 перейдет в 213). Вывести число, полученное при перестановке цифр десятков и единиц исходного числа (например, 123 перейдет в 132).*/ #include <stdio.h> #include <clocale> void sp (int); //функция нахождения суммы и произведения цифр void sprnl (int); //функция прочтения числа справа налево void pervsl (int); //функция 3 :D void pervsp (int); //функция 4 :P void sotdes (int); //функция перестановки сотен и десятков void desedin (int); //функция перестановки десятков и единиц int main() { setlocale (2, ".1251"); int num; do { printf ("Введите число: "); while (!(scanf("%d", &num)) || num < 100 || num > 999) { fflush(stdin); printf ("\nОшибка. Введите заново: "); } sp (num); sprnl (num); pervsl (num); pervsp (num); sotdes (num); desedin (num); printf ("\n\n"); } while (1); return 0; } void sp (int a) { int sum=0, mult=1; while (a) { sum+=a%10; mult*=a%10; a=a/10; } printf ("\n\nСумма цифр равна: %d", sum); printf ("\nПроизведение цифр: %d", mult); } void sprnl (int num) { int a, b, c; a=num%10; num/=10; b=num%10; num/=10; c=num%10; printf ("\nПеревернутое число: %d", 100*a+10*b+c); } void pervsl (int num) { int a, b; a=num%100; b=num/100; printf ("\nЗачеркнули первую слева цифру и приписали ее справа: %d", a*10 + b); } void pervsp (int num) { int a, b; a=num%10; b=num/10; printf ("\nЗачеркнули первую справа цифру и приписали ее слева: %d", a*100 + b); } void sotdes (int num) { int a, b, c; a=num%10; num/=10; b=num%10; num/=10; c=num%10; printf ("\nПерестановка сотен и десятков: %d", b*100 + c*10 + a); } void desedin (int num) { int a, b, c; a=num%10; num/=10; b=num%10; num/=10; c=num%10; printf ("\nПерестановка десятков и единиц: %d", c*100 + a*10 + b);
1) Допустим, бумагу мы сложим в бак 3. Это будет 83 + 58 = 141. Тогда в бак 2 надо сложить стекло или жесть.
1) а) Допустим, мы в бак 2 сложили стекло. Это будет 52 + 85 = 137. Тогда в бак 1 кладем жесть. Это будет 95 + 75 = 170. Всего 141 + 137 + 170 = 448 перемещений.
1) б) Допустим, мы в бак 2 сложили жесть. Это будет 64 + 75 = 139. Тогда в бак 1 кладем стекло. Это будет 98 + 85 = 183. Всего 141 + 139 + 183 = 463 > 448.
2) Допустим, бумагу мы сложили в бак 2. Это опять 83 + 58 = 141. 2) а) Кладем в бак 3 стекло. Это будет 98 + 52 = 150. Тогда в бак 1 кладем жесть. Это будет 95 + 75 = 170. Всего 141 + 150 + 170 = 461 > 448.
2) б) Кладем стекло в бак 1. Это будет 98 + 85 = 183. Тогда в бак 3 кладем жесть. 64 + 95 = 159 Всего 141 + 183 + 159 = 483 > 448.
3) Положим бумагу в бак 1. Это будет 83 + 83 = 166. 3) а) Положим стекло в бак 2. Это будет 52 + 85 = 137. Тогда жесть пойдет в бак 3. 64 + 95 = 159. Всего 166 + 137 + 159 = 465 > 448.
3) б) Положим стекло в бак 3. Это будет 52 + 98 = 150. Тогда жесть пойдет в бак 2. Это будет 64 + 75 = 139. Всего 166 + 150 + 139 = 455 > 448.
Я рассмотрел все 6 вариантов разложить 3 мусора по 3 бакам. ответ: минимальное количество перемещений равно 448.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota
Оформи подписку