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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.12.2008, 00:34   #11
Gorychev
Участник клуба
 
Аватар для Gorychev
 
Регистрация: 08.03.2008
Сообщений: 1,537
По умолчанию

Цитата:
А как вывести колличество счастливых билетов от 000000 до 999999??
Такую задачку, помню, задали в самый первый день моей учебы в универе...
На мой взгляд, приведенный ниже код самый оптимальный по быстродействию.

Код:
var a,b,c,d,e,f: byte;
    rez: longint;
begin
 rez:=0;
  for a:=0 to 9 do
    for b:=0 to 9 do
      for c:=0 to 9 do
        for d:=0 to 9 do
          for e:=0 to 9 do
            for f:=0 to 9 do
                if ((a+b+c)=(d+e+f)) then inc(rez);

   writeln(rez);
end.
Gorychev вне форума Ответить с цитированием
Старый 31.12.2008, 00:59   #12
vector
Пользователь
 
Регистрация: 25.12.2008
Сообщений: 13
По умолчанию

Цитата:
Сообщение от Gorychev Посмотреть сообщение
Такую задачку, помню, задали в самый первый день моей учебы в универе...
На мой взгляд, приведенный ниже код самый оптимальный по быстродействию.
Код:
...
По быстродействию быстрее можно, если f не перебирать, а вычислять как a+b+c-d-e, и проверять, что это значение входит в диапазон 0..9.

А еще быстрее можно таким алгоритмом:
Код:
var a,b,c: byte;
    rez: longint;
    arr: array[0..27] of longint;
begin
 rez:=0;
  for a:=0 to 9 do
    for b:=0 to 9 do
      for c:=0 to 9 do
        inc(arr[a+b+c]);
  for a:= 0 to 27 do 
    rez:=rez+arr[a]*arr[a];

   writeln(rez);
end.
Делаю домашние задания, курсовые студентам и школьникам.
email: solverr@mail.ru
ICQ: 472337610
vector вне форума Ответить с цитированием
Старый 31.12.2008, 01:31   #13
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

Держи парень - все что просил - пишет в выходной файл - мне кажется так удобнее будет тебе воспринять:

Код:
program happy;
var
 count, i : longint;
 er : integer;
 s : string[6];
 n,k : 0..6;
 l : 0..9;
 sum1, sum2 : byte;
begin
assign (output, 'output.txt');
rewrite (output);
writeln ('Happyness!');
writeln;
count:=0;
for i:=1 to 999999 do
begin
  sum1:=0;
  sum2:=0;
  str(i,s);
  n:=length(s);
  for k:=1 to (6-n) do
   s:='0'+s;
  for k:=1 to 6 do
   if k<=3 then
   begin
     val (s[k],l,er);
     sum1:=sum1+l
   end
   else
   begin
     val (s[k],l,er);
     sum2:=sum2+l
   end;

  if sum1=sum2 then
  begin
    writeln ('Happyness: ',s);
    count:=count+1
  end
end;
writeln;
writeln ('Count= ',count);
readln;
close (output)
end.
Ну если не хочешь в файл - мона убрать асигны и всю эту хрень ) - в принципе мне сама прога понравилась - если я не ошибаюсь счастливый билет это тот, у которого левая и правая части по сумме совпадают - тогда моя прога вроде работает - всего доброго - и не забудь мне отзыв оставить, если программа удовлетворила))) очень прошу)) буду благодарен))

Последний раз редактировалось capta1n; 31.12.2008 в 01:35.
capta1n вне форума Ответить с цитированием
Старый 31.12.2008, 09:12   #14
Gorychev
Участник клуба
 
Аватар для Gorychev
 
Регистрация: 08.03.2008
Сообщений: 1,537
По умолчанию

vector +1
Gorychev вне форума Ответить с цитированием
Старый 15.12.2009, 09:52   #15
Иван Добро
Новичок
Джуниор
 
Регистрация: 15.12.2009
Сообщений: 2
По умолчанию

Ребята, а у меня такой вопрос.
составить программу позволяющую определить является ли автобусный билет счастливым и если да то по какой системе. (Системы: Московская и Питерская. Московская - это сумма первых 3 чисел равна сумме вторых 3 чисел, а Питерская - сумма четных чисел равна нечетным). Заранее огромное спасибо
Иван Добро вне форума Ответить с цитированием
Старый 15.12.2009, 14:33   #16
Иван Добро
Новичок
Джуниор
 
Регистрация: 15.12.2009
Сообщений: 2
По умолчанию

ребята срочно!
Иван Добро вне форума Ответить с цитированием
Старый 20.12.2009, 19:29   #17
Lodyr
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 69
По умолчанию

встречный вопрос = а если задается такой диапозон
2к значный билет, то есть вводим к = его значение
например введите к = 6, то 2к=12
после будет так происходить = слева и справа должно быть по 6тизначному числу
и тоже самое = находим количество этих билетиков счастливых
как тогда?
Lodyr вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
"Домино" на Turbo Pascal'е. Очень нужно! DruiD88 Помощь студентам 15 17.04.2010 13:57
Очень нужна помощь по Turbo Pascal...Не могу составить програму,по теме:"Процедуры и файлы"...( Zara Помощь студентам 2 02.12.2008 18:23
если пользователь наберет какой-то другой символ не "y" или "n" и нажмет enter, программа проигнорирует skobets Общие вопросы C/C++ 2 03.06.2008 06:51
"Транспортная задача", "Поиск решения" Perroman Microsoft Office Excel 3 12.12.2007 17:12