Другие языки программирования и технологии

Программирование. 1 курс.

Есть задача: Подсчитать количество “счастливых” шестизначных автобусных билетов, т. е. таких, в номерах которых сумма первых трех цифр равна сумме трех последних.
Написал к ней алгоритм в делфи:

var
a,b,c,d,e,f:integer;
g:integer;
begin
g:=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
g:=g+1;
Edit1.Text:=Inttostr(g);
end;

Но препод сказал, что надо использовать одномерный массив, а я не могу понять куда его можно всунуть, помогите: 33
Дополню ответ Деда Мазая. Число билетов для заданной суммы трёх цифр равно квадрату кол-ва вариантов получения этой суммы.

var
i, j, k, res: integer;
cnt: array[0..27] of integer;
begin
for i := 0 to 9 do for j := 0 to 9 do for k := 0 to 9 do inc(cnt[i + j + k]);
for i := 0 to 27 do inc(res, sqr(cnt[i]));
writeln(res)
end.

Вместо 1000000 итераций исходного варианта получаем 1028.
Константин Искорнев
Константин Искорнев
56 357
Лучший ответ
Володя Чухалов Что-то по твоему алгоритму явно пошло не так ахаха
Если в результате задания получилось то, что надо и даже быстрее ее алгоритма, то думаю вы его выполнили даже на дважды отлично.
А препод тупой тогда, если думал, что вы будете использовать один цикл и разбор вести числа на цифры

Задания:
"Подсчитать количество “счастливых” шестизначных автобусных билетов"
"Подсчитать количество ВСЕХ “счастливых” шестизначных автобусных билетов"
все же разные, так что может препод и прав требуя так
Володя Чухалов Спасибо конечно, но ответ немного не по теме: 3 Может лучше подскажете как сделать с этим массивом?
Нет смысла перебирать все 6 цифр, это очень долго. Задачу можно решить перебрав только 3 цифры. Потребуется массив 0..27. В каждом элементе массива будем подсчитывать число вариантов, которое даёт эту сумму.
Если сумму можно получить N способами, значит эта сумма даёт N*N вариантов счастливого билета.
Например, суммы 0 и 27 можно получить только одним способом.
Суммы 1 и 26 можно получить тремя способами.
И т. д. Отсюда видно, что массив и перебор вариантов можно сократить в 2 раза.
Ivan Kosolapov
Ivan Kosolapov
58 065
Ivan Kosolapov > И т. д. Отсюда видно, что массив и перебор вариантов можно сократить в 2 раза.

Тут я ошибся. Массив уменьшить можно, но не знаю, есть ли простой способ сильно сократить перебор.
Pascal, на Delphi не пишу
Сергей Павлюк
Сергей Павлюк
1 974