Помощь - Поиск - Пользователи - Календарь
Полная версия: Алгоритмы решения
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
annna
Извеняюсь, не подскажет кто-либо алгоритмы решения возникших вопросов(задача решается устно, без ТР)
1.Как определить количество трёхзначных, натуральных чисел, сумма которых равна N(1<=N<27)
2.Дано натуральное число N (N<32767). Определить его первую и последнюю цифры.
APAL
1) 27 - получится если все три цифры "9". Следовательно вариант "999" исключаем.
1 - варианты "001", "010", "100". Если не будем считать "001" и "010" трехзначными числами, то исключаем еще вариант "100".
Исключаем числа до 99, т.к. они двухзначные.
Итого: из 999 вариантов минус два исключенных и минус те что <=99. Получится, что условию удовлетворяют 999-99-2= 898 чисел!

P.S.: Если кому не лень проверьте меня - может я что-то напутал с "устным решением"... smile.gif
APAL
2)
Здесь проще наверное сделать так:
Преобразовываем численную переменную в строку.
Бурем первый и последний символы и преобразовываем обратно в числа.
Готово! :D

Но скоре всего задание подразумевает численно-математические преобразования... надо подумать...
annna
со второй скорее всего требуются мат.преобразования т.к. прийдётся писать на с++(а задачка относится к теме программирование циклов с использованием оператора while);
ну а первую подумаю как написать... ;)
APAL
Задачки получаются однотипные...
Я где то видел на форуме нечто подобное. Поищу, подумаю - счас пока свободного времени мало.
BlackShadow
2)
Код

cin >> n;
cout << "Last: " << n % 10 << '\n';
while (n > 10)
 n %= 10;
cout << "First: " << n << '\n';

Суть такая: выводишь остаток от деления на 10 (последняя цифра), а затем делишь само число на 10, пока то не тстанет меньше 10. Так мы найдём первую цифру. При заданых ограничениях кол-во итераций не более 5.
А можно извернуться:
Код

for (n = n;n > 10;n %= 10)

Но это уже не "while".
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.