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

Помогите составить задачу в Pascal

Трамвайный билет имеет шестизначный номер. Выяснить, количество «счастливых» билетов. Билет назовем «счастливым», если сумма первых трех цифр равна сумме последних трех цифр. Примечание. Так как шестизначное число больше 32767(тип Integer), необходимо номер билета определит как тип Longint( до 10 знаков).
AH
Anvar Hakkiev
786
Доброго времени суток.

Вот более изящное решение

var
j, k, l, m : Word;
A : array [0..27] of Integer; {27 потому что максимальная сумма трех цифр 27, т. е. 9+9+9}
begin
ClrScr;
Writeln ('счастливый билет');
for j:=1 to 27 do A[j]:=0;
for j:=0 to 9 do
for k:=0 to 9 do
for l:=0 to 9 do
A[j+k+l] := A[j+k+l] + 1;

m := 0;
for j:=0 to 27 do
m := m + A[j]*A[j];

WriteLn(m);

ReadLn; {это чтобы увидеть результат}
end.

А если требуется все-таки "лобовое", то можно так

m := 0;
for k:=0 to 999999 do begin
Str(k, SS);
SS := Copy('000000', 1, 6 - Length(SS)) + SS; {дополняем слева нулями при необходимости}
if (Ord(SS[1])-48+Ord(SS[2])-48+Ord(SS[3])-48) = (Ord(SS[4])-48+Ord(SS[5])-48+Ord(SS[6])-48) then
Inc(m);
end;

Остальное сами.

Удачи!
Д4
Дмитрий 400Т-55К
59 613
Лучший ответ
Саша Кузьмин я немного дополню вас....во второй программе лучше начать цикл со ста тысяч что приведет к боле быстрому выведению результата
ну ты нуб, это же элементарно. Я такие задачки в 5 классе решал. Сам думай))
^.^ Piko.o_Boy
^.^ Piko.o_Boy
16 278
ммм) ну я бы сделал влоб:
цикл который от 0 до 999999 гоняет число и смотрит сумму цифр (123+456)
реализуется так:
число как сумма будет склабываться поразрядно: т. е. число 123456=1*100000+2*10000+3*1000+4*100+5*10+6
соответственно 123456 это переменные, сумму котоых мы смотрим и при равенстве увеличиваем счетчик
Артур Хайсаров
Артур Хайсаров
11 404
var i1, i2: byte;
kol : integer;

//Возвращает сумму цифр числа
function Sum(a : integer):integer;
var s, m, n : integer;
begin
n := a;
s := 0;
while n > 10 do begin
m := n mod 10;
n := Trunc((n - m)/10);
s := S + m;
end;
S := S + n;
sum := s;
end;
BEGIN
kol := 0;
for i1 := 0 to 999 do
for i2 := 0 to 999 do
if Sum(i1) = Sum(i2) then begin
inc(kol);
end;
writeln('Количество счастливых билетов ',kol-1); //исключаем комбинацию 000000
END.