Вот собственно сама задачка:
D. Гадание
Мария учится в классе
с углубленным изучением информатики. Девочка она умная, аккуратная и очень
любит стихи Шекспира. Еще она любит гадать на книжках.
Каждый утро, перед
тем выйти из дома Мария смотрит в свою любимую книгу стихов, и определяет что
день грядущий ей готовит. Самое сложное — выбрать номер сонета, который
укажет, что ожидает ее сегодня.
Конечно же, Мария
могла бы выбрать сонет наугад, руководствуясь сегодняшним настроением. Но
порядка в этом нет никакого. Поэтому Мария придумала для себя четкую схему
выбора странички.
Алгоритм выбора
сонета выглядит следующим образом: Задается число N, в числе N цифры
не повторяются и среди них нет цифры 0. В этом числе меняются местами
цифры, сортируя их по возрастанию. Затем полученное число умножается на свое
любимое число 9. Иногда это произведение получается слишком большим, у
Шекспира 153 сонета, поэтому в качестве номера страницы Мария берет сумму цифр
произведения.
По числу N
выведите номер сонета на сегодня.
Входные данные
Дано натуральное
число N (N<=1000). Гарантируется, что
среди цифр числа N не встречается цифры 0. Все цифры
числа N различны.
Выходные данные
Выведите единственное
число — искомый номер начального сонета.
Примеры
входные данные
321
выходные данные
9
Другие языки программирования и технологии
Помогите с задачкой по Паскалю
var
N,i :integer;
ar : array [1..9] of integer;
sum : integer;
pow : integer;
begin
write('Enter number: ');
readln(N);
for i := 1 to 9 do ar[i] := 0;
while (N <> 0) do begin
inc(ar[(N mod 10)]);
N := N div 10;
end;
pow := 1;
N := 0;
for i := 9 downto 1 do begin
if(ar[i] > 0) then
begin N := i * pow + N;
pow := pow * 10;
end;
end;
N := N * 9;
while (N <> 0) do begin
sum := sum + (N mod 10);
N := N div 10;
end;
writeln(sum,' ');
end.
N,i :integer;
ar : array [1..9] of integer;
sum : integer;
pow : integer;
begin
write('Enter number: ');
readln(N);
for i := 1 to 9 do ar[i] := 0;
while (N <> 0) do begin
inc(ar[(N mod 10)]);
N := N div 10;
end;
pow := 1;
N := 0;
for i := 9 downto 1 do begin
if(ar[i] > 0) then
begin N := i * pow + N;
pow := pow * 10;
end;
end;
N := N * 9;
while (N <> 0) do begin
sum := sum + (N mod 10);
N := N div 10;
end;
writeln(sum,' ');
end.
В чем помочь? задание не очень сложное, хотя и много букв.
Разбейте задачу на подзадачи.
1 - Проблема разложения числа на цифры
решается либо переводом в строку (процедура Str), откуда числа легко извлечь, либо последовательным делением на 10 и проверкой остатка от деления (div, mod) с занесением н-р в массив. Т. к. число <= 1000 размер массива очевиден.
2 - Сортировка. Возьмите, который лучше всего знаете. 4 числа всего.
3 - Получение полученного числа из строки (если выбрали работу со строками) - опять-же не проблема. (процедура Val). Иначе последовательно умножаете каждую цифру на кратное 10.
4 - Если превысило - опять разложение на цифры (логично сделать функцию) ну и сумму не составит труда.
Пишите на почту, если что.
Разбейте задачу на подзадачи.
1 - Проблема разложения числа на цифры
решается либо переводом в строку (процедура Str), откуда числа легко извлечь, либо последовательным делением на 10 и проверкой остатка от деления (div, mod) с занесением н-р в массив. Т. к. число <= 1000 размер массива очевиден.
2 - Сортировка. Возьмите, который лучше всего знаете. 4 числа всего.
3 - Получение полученного числа из строки (если выбрали работу со строками) - опять-же не проблема. (процедура Val). Иначе последовательно умножаете каждую цифру на кратное 10.
4 - Если превысило - опять разложение на цифры (логично сделать функцию) ну и сумму не составит труда.
Пишите на почту, если что.
Владимир Танасов
Это если влоб. Но кажется есть и другой способ, =) Сейчас пока еду думать тяжеловато
Похожие вопросы
- Помогите простенькие задачки по паскалю решить??)
- Люди помогите решить задачку!!!на паскале
- Помогите решить задачку в паскале на циклы. Вычисоить: y=cos(1+cos(2+...+cos(39+cos40)...))
- Помогите с задачкой на паскаль
- Помогите с задачкой на Паскале
- Помогите решить задачку в паскале!!!
- Помогите, пожалуйста, решить задачку на паскале. Заранее благодарна.
- Задачка в Паскале
- Знатоки Турбо Паскаля, помогите решить задачки для 7-го класса. Дочке очень нужно.
- помогите решить задачку по информатике на паскале. найти минимальный и максимальный элемент двухмерного массива
Показать что ВЫ умеете решать такие задачи? Я рад.
Вообще просили помочь =)