Технический форум

Технический форум (http://www.tehnari.ru/index.php)
-   Помощь студентам (http://www.tehnari.ru/forumdisplay.php?f=41)
-   -   Задача о счастливых числах (http://www.tehnari.ru/showthread.php?t=93631)

Стася 08.01.2014 17:24

Задача о счастливых числах
 
Вложений: 1
Вот такая задачка, нужно решить в Паскале

Я начала делать через массивы, но абсолютно не представляю, как найти количество счастливых чисел, с суммой цифр 13. Помогите пожалуйста

Код:

Const n=6;
vect_min = 0;
vect_max = 9;

Var        i, s, s1, s2 : Integer;                                                       
A:Array[1..n] Of Integer;

Begin
Randomize;       
For i:=1 To n Do       
Begin
A[i]:=Random(vect_max-vect_min + 1) + vect_min;
Write(A[i]);
End;

WriteLn;

s1:=A[1]+A[2]+A[3];       
s2:=A[4]+A[5]+A[6];       

If s1=s2 then
WriteLn('билет "счастливый" :)')else
WriteLn('увы, билет не счастливый :( ');

End.


Vladimir_S 08.01.2014 17:29

Цитата:

Сообщение от Стася (Сообщение 989638)
Вот такая задачка, нужно решить в Паскале

Ладно, сейчас нарисую.

AlexZir 08.01.2014 17:38

Как один из вариантов :)
Цитата:

n:=0;
for x:=0 to 9 do
for y:=0 to 9 do
for z:=0 to 9 do
if x+y+z=13 then inc(n);
У меня получилось, что таких чисел всего может быть 75 :)

Стася 08.01.2014 17:41

Спасибо)) Сейчас попробую)

Vladimir_S 08.01.2014 17:43

Лёша, по-моему, в условии не полусумма, а вся сумма должна равняться 13. Нет?

AlexZir 08.01.2014 17:45

Не, сравнивается сумма троек цифр шестизначного числа :)
Если сумма 1,2,3 цифр равна сумме 4,5,6 цифр, то такой билет считается счастливым и незамедлительно съедается на глазах у изумленного контроллера :))
В задании нужно вычислить количество возможных комбинаций троек, в сумме равных 13.

А если общая сумма цифр числа будет равна 13, то такой билет просто не может считаться счастливым, так как не соблюдается принцип равенства суммы троек цифр. Общая сумма цифр числа счастливого билета равна удвоенной сумме одной из троек цифр.

Стася 08.01.2014 17:48

Юхуу, вроде все получилось:) еще раз спасибо

Код:

A[2]:=y;
A[1]:=x;
A[3]:=z;

c:=0;
for x:=0 to 9 do
for y:=0 to 9 do
for z:=0 to 9 do
if x+y+z=13 then inc(c);

writeln(c)

75 таких)

AlexZir 08.01.2014 17:59

Ну вы радоваться то не торопитесь, задача решена не полностью, вы еще не реализовали механизм определения счастливого числа, введенного с клавиатуры :)

Vladimir_S 08.01.2014 18:00

Цитата:

Сообщение от AlexZir (Сообщение 989646)
А если общая сумма цифр числа будет равна 13, то такой билет просто не может считаться счастливым

Ох, пардон. Заскок. Конечно, не может - по причине нечетности числа 13.

Vladimir_S 08.01.2014 18:06

Цитата:

Сообщение от Стася (Сообщение 989647)
75 таких)

А вот у меня получилось самую малость другое число: 5175. Решал "в лоб":
Код:

Var
 K,N,i:LongInt;
 Sum:Byte;
 B:boolean;

Procedure Lucky(KL:LongInt; var SL:byte; var Lu:boolean);
var
 A:Array[1..6] of byte;
 Q:LongInt;
 p,S1,S2:byte;
begin
 Q:=KL;
 for p:=6 downto 1 do
  begin
  A[p]:=Q mod 10;
  Q:=Q div 10;
  end;
 SL:=A[1]+A[2]+A[3];
 Lu:=(A[1]+A[2]+A[3])=(A[4]+A[5]+A[6]);
end;

Begin
 Repeat
  Write('Number = ');
  Readln(K);
  If (K<100000) or (K>999999) then Writeln('Number must contain 6 digits!');
 Until (K>99999) and (K<1000000);
 Lucky(K,Sum,B);
 Writeln(B);
 N:=0;
 for i:=100000 to 999999 do
  begin
  Lucky(i,Sum,B);
  if B and (Sum=13) then Inc(N);
  end;
 Writeln(N,' numbers');
 Readln
End.



Часовой пояс GMT +4, время: 13:52.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.