Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Теоретические вопросы _ Алгоритмы решения

Автор: annna 8.06.2004 19:51

Извеняюсь, не подскажет кто-либо алгоритмы решения возникших вопросов(задача решается устно, без ТР)
1.Как определить количество трёхзначных, натуральных чисел, сумма которых равна N(1<=N<27)
2.Дано натуральное число N (N<32767). Определить его первую и последнюю цифры.

Автор: APAL 8.06.2004 21:39

1) 27 - получится если все три цифры "9". Следовательно вариант "999" исключаем.
1 - варианты "001", "010", "100". Если не будем считать "001" и "010" трехзначными числами, то исключаем еще вариант "100".
Исключаем числа до 99, т.к. они двухзначные.
Итого: из 999 вариантов минус два исключенных и минус те что <=99. Получится, что условию удовлетворяют 999-99-2= 898 чисел!

P.S.: Если кому не лень проверьте меня - может я что-то напутал с "устным решением"... smile.gif

Автор: APAL 8.06.2004 21:45

2)
Здесь проще наверное сделать так:
Преобразовываем численную переменную в строку.
Бурем первый и последний символы и преобразовываем обратно в числа.
Готово! :D

Но скоре всего задание подразумевает численно-математические преобразования... надо подумать...

Автор: annna 8.06.2004 23:39

со второй скорее всего требуются мат.преобразования т.к. прийдётся писать на с++(а задачка относится к теме программирование циклов с использованием оператора while);
ну а первую подумаю как написать... ;)

Автор: APAL 9.06.2004 16:52

Задачки получаются однотипные...
Я где то видел на форуме нечто подобное. Поищу, подумаю - счас пока свободного времени мало.

Автор: BlackShadow 11.06.2004 16:13

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".