Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.10.2012, 16:55   #1
Павел Шилин
Пользователь
 
Регистрация: 18.05.2012
Сообщений: 13
По умолчанию Задано натуральное число имеющее от 2 до 9 цифр

Задано натуральное число имеющее от 2 до 9 цифр между какими цифрами нужно поставить знак чтобы произведение двух половинок было максимальным? Например:
дано 2121.

2*121=242
21+21=441 - наибольшее
212*1=212

ответ 21*21=441
Желательно на паскале

Последний раз редактировалось Павел Шилин; 22.10.2012 в 17:45.
Павел Шилин вне форума Ответить с цитированием
Старый 22.10.2012, 17:01   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

я бы перебрал все варианты (их всего 16), нашёл максимальное значение...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.10.2012, 17:08   #3
Павел Шилин
Пользователь
 
Регистрация: 18.05.2012
Сообщений: 13
По умолчанию

А почему вариантов 16? Можно подробнее.
Павел Шилин вне форума Ответить с цитированием
Старый 22.10.2012, 17:37   #4
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
я бы перебрал все варианты (их всего 16)
судя по
Цитата:
натуральное число имеющее от 2 до 9 цифр между какими цифрами нужно поставить знак чтобы произведение
вариантов минимум 1 максимум 8
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 22.10.2012, 18:13   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
uses
  crt;

var
  num, a, b, d, tmp: longint;

begin
  readln(num);
  a := 0;
  b := 0;
  d := 1;
  tmp := 0;
  while num > 10 do
  begin
    tmp := (num mod 10) * d + tmp;
    if (num div 10) * tmp > a * b then
    begin
      a := num div 10;
      b := tmp;
    end;
    d := 10 * d;
    num := num div 10;
  end;
  writeln(a, '*', b, '=', a * b);
  readln;
end.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 22.10.2012, 19:22   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Mad_Cat
вариантов минимум 1 максимум 8
16 - потому что надо проверять не только знак умножения, но и сложения (хотя, соглашусь, что для подавляющего большинства чисел умножение даст больший результат, чем сложение, но не для всех).

Цитата:
Сообщение от BDA
Код:
writeln(a, '*', b, '=', a * b);
что, меня никто не слушает, да? )
проверьте вашу программу для чисел (например):
11
17
110
191
и т.д.
ответы получаются неверными..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.10.2012, 19:24   #7
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
потому что надо проверять не только знак умножения, но и сложения
условие
Цитата:
чтобы произведение двух половинок было максимальным
так то
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 22.10.2012, 19:25   #8
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Цитата:
чтобы произведение двух половинок
Не вижу упоминания знака сложения
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 22.10.2012, 20:21   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Mad_Cat, BDA, приношу свои извинения, Вы правы!

меня смутило:
Цитата:
Код:
2*121=242
21+21=441 - наибольшее
212*1=212
увидел знак "плюс" (разумеется, опечатка!), остальное уже фантазия подсказала!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дано натуральное число n. Определить, сколько парных цифр в числе n. Чему равна сумма нечетных его цифр? pahanzona Microsoft Office Excel 4 27.02.2011 15:46
Си. Задано натуральное число. В нем выделить максимальную по длине группу подряд идущих четных цифр Veina Помощь студентам 20 23.11.2009 17:00
Pascal - Задано число n неизвестной разрядности. Вычислить сколько цифр в этом числе Виолетта Помощь студентам 2 18.03.2009 07:17
Натуральное число, в записи которого п цифр, называется числом Армстронга, если сумма его цифр, возведенн OTLi4HO Общие вопросы C/C++ 6 14.01.2009 19:48
Найти на отрезке [n, 2n] натуральное число, имеющее наибольшее количество делителей. APTEMUC Паскаль, Turbo Pascal, PascalABC.NET 2 10.12.2008 05:20