Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 08.01.2014, 17:24   #1 (permalink)
Стася
Новичок
 
Регистрация: 03.12.2013
Сообщений: 11
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Задача о счастливых числах

Вот такая задачка, нужно решить в Паскале

Я начала делать через массивы, но абсолютно не представляю, как найти количество счастливых чисел, с суммой цифр 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.
Миниатюры
22.jpg  
Стася вне форума   Ответить с цитированием

Старый 08.01.2014, 17:24
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Я уверен, что эти топики не без полезной информации

Задача на Си
Задача с if
Задача на C#
Задача по С + +

Старый 08.01.2014, 17:29   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Стася Посмотреть сообщение
Вот такая задачка, нужно решить в Паскале
Ладно, сейчас нарисую.
Vladimir_S вне форума   Ответить с цитированием
Старый 08.01.2014, 17:38   #3 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,794
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Как один из вариантов
Цитата:
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
__________________
Убить всех человеков!
AlexZir вне форума   Ответить с цитированием
Старый 08.01.2014, 17:41   #4 (permalink)
Стася
Новичок
 
Регистрация: 03.12.2013
Сообщений: 11
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо)) Сейчас попробую)
Стася вне форума   Ответить с цитированием
Старый 08.01.2014, 17:43   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

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

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 08.01.2014, 17:45   #6 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,794
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

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

А если общая сумма цифр числа будет равна 13, то такой билет просто не может считаться счастливым, так как не соблюдается принцип равенства суммы троек цифр. Общая сумма цифр числа счастливого билета равна удвоенной сумме одной из троек цифр.
__________________
Убить всех человеков!
AlexZir вне форума   Ответить с цитированием
Старый 08.01.2014, 17:48   #7 (permalink)
Стася
Новичок
 
Регистрация: 03.12.2013
Сообщений: 11
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

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

Код:
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 таких)
Стася вне форума   Ответить с цитированием
Старый 08.01.2014, 17:59   #8 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,794
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Ну вы радоваться то не торопитесь, задача решена не полностью, вы еще не реализовали механизм определения счастливого числа, введенного с клавиатуры
__________________
Убить всех человеков!
AlexZir вне форума   Ответить с цитированием
Старый 08.01.2014, 18:00   #9 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от AlexZir Посмотреть сообщение
А если общая сумма цифр числа будет равна 13, то такой билет просто не может считаться счастливым
Ох, пардон. Заскок. Конечно, не может - по причине нечетности числа 13.
Vladimir_S вне форума   Ответить с цитированием
Старый 08.01.2014, 18:06   #10 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Стася Посмотреть сообщение
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.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




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

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.