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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2013, 10:39   #11
Alexandr67
Пользователь
 
Регистрация: 22.11.2013
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Baburek Посмотреть сообщение
Ознакомьтесь: "Новичкам: Насчет халявы"
Хоть и бывают исключения, но суть в том, что хотя бы общее представление нужно иметь и совершить несколько попыток самому написать.

"Ничего не понятно" не бывает, если вы учитесь. Бывает дикая лень. Синтаксис знать надо, для этого есть сотни учебного материала.

BDA, согласен с вами. Но все-таки "на словах" программировать не научишь. Часов тоже часто не хватает, чтобы охватить курс нормально. Мотивации почти нет обучать (что тут скажешь - получает преподаватель не много). Поэтому в половине случаев, к сожалению, получается так, что преподаватель больше служит, чтобы ответить на вопросы, чем рассказать подробно как решать подобные задачи.

P.S. Ну синтаксис-то Pascal или C++ точно должны рассказывать. Простейшие задачи решают, на основе которых можно размышлять. Так не бывает же. Или бывает?
Он считает,что мы пришли со школы уже знающие паскаль,некоторые да,а некоторые в школе такого слова даже не слышали,ему говорил об этом,он говорит,что так не бывает и я притворяюсь и выходит,что с лекций всегда отпускают,а на семинарах слушаем истории не относящиеся к программированию,а тут вот он бац и выдал каждому свою задачку по типу такой,заявив,что это легко и подсказывать он не собирается...По мере возможностей изучаю сам все это дело,причем с нуля,ввроде даже что-то получается,тут вот просто критическая ситуация,потому и написал на форум этот
Alexandr67 вне форума Ответить с цитированием
Старый 22.11.2013, 10:43   #12
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

10^5 в этом коде ну ни как в ответ не выдаст. 100! уже запредельно для int64. Так что без длинной арифметики не обойтись
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 22.11.2013 в 10:48.
Аватар вне форума Ответить с цитированием
Старый 22.11.2013, 10:52   #13
Alexandr67
Пользователь
 
Регистрация: 22.11.2013
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
10^5 в этом коде ну ни как в ответ не выдаст. 100! уже запредельно для int64. Так что без длинной арифметики не обойтись
оно понятно,поэтому за невозможностью изучить длинную арифметику за 3 часа сюда и написал,ибо здесь,скорее всего,сидят профи
Alexandr67 вне форума Ответить с цитированием
Старый 22.11.2013, 11:03   #14
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

100!
Цитата:
93326215443944152681699238856266700 49071596826438162146859296389521759 99932299156089414639761565182862536 97920827223758251185210916864000000 000000000000000000
Цитата:
за невозможностью изучить длинную арифметику за 3 часа
а ее не надо изучать, хватит раздела массивы(~1 час с закреплением)
программа считающая 100! написана за 20 мин
Цитата:
здесь,скорее всего,сидят профи
и за задания с кодом >20 строк они обычно хотят денег
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 22.11.2013, 11:15   #15
Alexandr67
Пользователь
 
Регистрация: 22.11.2013
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Mad_Cat Посмотреть сообщение
100!


а ее не надо изучать, хватит раздела массивы(~1 час с закреплением)
программа считающая 100! написана за 20 мин
и за задания с кодом >20 строк они обычно хотят денег

примерно этого и следовало ожидать и чуда не случилось,ну ладно
Alexandr67 вне форума Ответить с цитированием
Старый 22.11.2013, 11:29   #16
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
и чуда не случилось
опять же "обычно" <> "всегда" и чудеса иногда случаются
Код:
var a, b, s: string;
  K: integer;

function CharToByte(c: char): byte;
begin
  CharToByte := ord(c) - ord('0');
end;

function BytetoChar(c: byte): char;
begin
  BytetoChar := chr(c + ord('0'));
end;

function Summa(x, y: string): string;
var i: integer;
  summ: byte;
  res: string;
begin
  res := '';
  while length(x) < length(y) do
    x := '0' + x;
  while length(y) < length(x) do
    y := '0' + y;
  for i := 1 to length(x) do
    res := res + '0';
  for i := length(x) downto 2 do
  begin
    summ := CharToByte(x[i]) + CharToByte(y[i]) + CharToByte(res[i]);
    res[i] := bytetochar(summ mod 10);
    res[i - 1] := bytetochar(summ div 10);
  end;
  summ := CharToByte(x[1]) + CharToByte(y[1]) + CharToByte(res[1]);
  if summ <= 9 then
    res[1] := bytetochar(summ)
  else begin
    res[1] := bytetochar(summ mod 10);
    res := bytetochar(summ div 10) + res;
  end;
  summa := res;
end;

function MultDigit(x, y: string): string;
var i: integer;
  Mult: byte;
  res: string;
begin
  res := '';
  for i := 1 to length(x) do
    res := res + '0';
  for i := length(x) downto 2 do
  begin
    Mult := CharToByte(x[i]) * CharToByte(y[1]) + CharToByte(res[i]);
    res[i] := bytetochar(Mult mod 10);
    res[i - 1] := bytetochar(Mult div 10);
  end;
  mult := CharToByte(x[1]) * CharToByte(y[1]) + CharToByte(res[1]);
  if mult <= 9 then
    res[1] := bytetochar(mult)
  else begin
    res[1] := bytetochar(mult mod 10);
    res := bytetochar(mult div 10) + res;
  end;
  MultDigit := res;
end;

function MultNumb(x, y: string): string;
var i: integer;
  Mult: byte;
  res: string;
  buf: string;
  tmp: string;
begin
  res := '';
  buf := '';
  for i := length(y) downto 1 do
  begin
    tmp := Multdigit(x, y[i]) + buf;
    res := summa(res, tmp);
    buf := buf + '0';
  end;
  MultNumb := res;
end;

function HighLow(x, y: string): integer;
var k: integer;
begin
  if trim(x) = trim(y) then begin HighLow := 0; exit; end;
  if Length(x) > length(y) then begin HighLow := 1; exit; end
  else
    if Length(y) > length(x) then begin HighLow := -1; exit; end
    else
    begin
      k := 1;
      while (x[k] = y[k]) do inc(k);
      if CharToByte(x[k]) > CharToByte(y[k]) then begin HighLow := 1; exit; end
      else begin HighLow := -1; exit; end
    end;


end;

begin
  write('Input Number:');
  readln(b);
  k := 1;
  s := '1';
  while highlow(s, b) = -1 do begin
    inc(k);
    Str(k, a);
    s := MultNumb(s, a);
  end;
  if highlow(s, b) = 1 then writeln('No Fuck!!!')
  else
    writeln(a, '!=', b);
end.
P.S Не оптимизировал, В лоб, но работает же, а это имхо главное
Цитата:
Input Number:720
6!=720
Input Number:1200
No Fuck!!!
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"

Последний раз редактировалось Mad_Cat; 22.11.2013 в 11:49.
Mad_Cat вне форума Ответить с цитированием
Старый 22.11.2013, 11:33   #17
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Само условие задачи с большим подводным камнем. Скалой можно сказать. Как преподаватель собирается проверять работоспособность? Ну чтобы в результате хотя бы (!) 10000 получить? Сколько часов он собирается вбивать строку с исходным числом? А может и не часов, посчитать нужно. И уместиться ли такая строка вообще в память компа? А речь то о 10^5
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 22.11.2013 в 11:36.
Аватар вне форума Ответить с цитированием
Старый 22.11.2013, 11:43   #18
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
но нужно через длинную арифметику,т.к по условию придется вывести в ответ число до 10^5
по помоему абсолютно бессмысленное занятие.
Я ещё понимаю, когда вводишь маленькое число (например 100)
и выдаёшь его факториал
(напоминаю, что факториал 100! равен
93326215443944152681699238856266700 49071596826438162146859296389
52175999932299156089414639761565182 862536979208272237582511852
10916864000000000000000000000000 )
ладно.

а теперь попробуйте ввести это число, чтобы получить обратный факториал. именно ВВЕСТИ, ручками, не скопировать, ведь у нас пользователь программы будет ВВОДИТЬ числа, да?!

а теперь возьмём факториал числа 10^5 = 100000! по формуле Стирлинга в этом числе получается 456574 знака. Это 456 тысяч 574 значное число. Пользователь не замучается вводить 456 тысяч циферок?!!!!

ну и мы понимаем, что чем больше число, тем меньше вероятность, что для него существует обратный факториал. введите, например, в свою программу числа от 25, 26, 27, 28, 29.... до 119, или любое число от 121 до 719 - чему будет равен обратный факториал?! дальше - всё намного хуже.

отсюда вывод - задачу в топку.
напомнило:
- Подметите плац ломом.
- давайте я подмету метлой - будет быстро и чисто.
- А мне не нужно, чтобы было быстро и чисто, мне нужно, чтобы ты .....!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.11.2013, 11:54   #19
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Mad_Cat, красавчик!!! Код работает как часы!
я проверил на паре чисел "небольших" входных чисел (см. ниже) - всё отработало правильно и, что особенно удивило - быстро!

Респект!


Код:
Код:
begin
  write('Input Number:');
{  b := '9332621544394415268169923885626670049071596826438162146859296389' +
    '52175999932299156089414639761565182862536979208272237582511852' +
    '10916864000000000000000000000000'; }

{  readln(b); }
b := '1220136825991110068701238785423046926253574342803192842192413588'+
'38584537315388199760549644750220328186301361647714820358416337'+
'87220781772004807852051593292854779075719393306037729608590862'+
'70429174547882424912726344305670173270769461062802310452644218'+
'87878946575477714986349436778103764427403382736539747138647787'+
'84954384895955375379904232410612713269843277457155463099772027'+
'81014561081188373709531016356324432987029563896628911658974769'+
'57208792692887128178007026517450776841071962439039432253642260'+
'52349458501299185715012487069615681416253590566934238130088562'+
'49246891564126775654481886506593847951775360894005745238940335'+
'79847636394490531306232374906644504882466507594673586207463792'+
'51842004593696929810222639719525971909452178233317569345815085'+
'52332820762820023402626907898342451712006207714640979456116127'+
'62914595123722991334016955236385094288559201872743379517301458'+
'63575708283557801587354327688886801203998823847021514676054454'+
'07663535984174430480128938313896881639487469658817504506926365'+
'33817505547812864000000000000000000000000000000000000000000000'+
'00000000000000000000000000000000000000000000000000000000000000'+
'00000000000000000';

  writeLn(' ', b);
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.11.2013, 11:58   #20
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
Mad_Cat, красавчик!!!
"Подумаешь....Я еще и вышивать могу...И на машинке тоже" (c)Матроскин
Факториал 10000 в аттаче
Вложения
Тип файла: txt 10000.txt (34.8 Кб, 142 просмотров)
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"

Последний раз редактировалось Mad_Cat; 22.11.2013 в 12:32.
Mad_Cat вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C# Длинная арифметика _Varyag_ Помощь студентам 23 21.02.2012 19:33
Длинная арифметика morgan97 Паскаль, Turbo Pascal, PascalABC.NET 0 04.12.2011 20:03
Длинная арифметика nervniy Общие вопросы Delphi 4 19.04.2011 23:18
длинная арифметика Dimarik Общие вопросы C/C++ 1 16.09.2009 12:02
Длинная арифметика DmT Помощь студентам 2 06.10.2007 22:43