Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ЛЮДИ ПОМОГИТЕ С ЗАДАЧЕЙ!!! задача на паскале 
:(
    Опции темы
Elfin
Дата 27.10.2004, 19:58 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Ув. тов. пр-мисты.. нужно срочно решить задачу, зачет по программированию горит...
вобщем условие звучит так, точной формулировки не помню, объясню на своих словах...

дано выражение...
ХРУСТ*ГРОХОТ=РРРРРРРРРРР

каждая буква в слове (будет являться переменной в задаче) должна иметь свое значение, всего разных букв в выражении 7, значит у каждой буквы будет свое значение, причем одинаковым буквам - одинаковое значение, разным разное, например если переменные будут иметь такие значения:
х=4
р=2
у=3
с=0
т=1
г=6
о=7

то выражение будет выгляденть так 42301*627471=22222222222

итак надо найти при каких значениях переменных выражение будет истинно....

мляха муха я запарился с этой задачей, не знаю как решать помогите люди!!!! ААА!!!

пысы, очевидно что, чтобы получить левую часть не меньше правой части уравнения, то нужно чтобы одна из переменных "х" и "г" равнялась не меньшему числу чем 4 другая - не меньше 5 (иначе длина результата левой части будет меньше 11 знаков)
  Вверх
Pakshin A. S.
Дата 27.10.2004, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



Можно решать в лоб.
Буквы принимают значение от 0 до 9 => берем и просто делаем различные сочетания значений букв...
Добавлено @ 21:21
завтра-послезавтра предложу решение...
PM   Вверх
Elfin
Дата 28.10.2004, 04:08 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











различные сочетания значений это понятно, дело в том по каким законам или формулам они бу дут изменяться в цикле? если начальные значения переменных увеличивать на один, то вскоре мы вернемся к этим же начальным значениям, я же пробовал брать рандомные значения, но ничего не вышло - прога очень долго считает (возможно дажн бесконечно, я так и не дождался результата) тем более препод сказал что это решение является не рациональным и процент такого подбора случайными числами по теории вероятности близок к 0% :))))
  Вверх
~FoX~
Дата 28.10.2004, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 1
Всего: 68



Elfin

Цитата
00001*000001
00002*000001
00003*000001
00004*000001
........................
99999*000002
etc.

39916800 - итераций - не очень долго :D
Если простым перебором подайдет, то выложу решение с небольшой оптимизацией


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Akina
Дата 28.10.2004, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: нет
Всего: 454



~FoX~
Ну, во-первых, итераций не более 10! / (10-7)! = 604800. На самом деле меньше - заведомо Х и Г не ноль, причем хотя бы одно - 4 или больше, Р - 1, 4, 5, 6 или 9.
Проще решать разложением РРРРРРРРРРР на 2 множителя. ИМХО.



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Alex101
Дата 28.10.2004, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 891
Регистрация: 8.4.2002
Где: Москва

Репутация: нет
Всего: 10



Цитата(Elfin @ 27.10.2004, 16:58)

выражение будет выгляденть так 42301*627471=22222222222

Интересно, как это у тебя получилось? :)

Да, еще вопрос, в какой системе счисления?

Если десятичная система, то уже понятно, что
Т<>0, 1, 5, 6

Это сообщение отредактировал(а) Alex101 - 28.10.2004, 13:06


--------------------
С уважением, А. Фролов.
PM MAIL ICQ   Вверх
Guest
Дата 28.10.2004, 15:23 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата
Цитата (Elfin @ 27.10.2004, 16:58)

выражение будет выгляденть так 42301*627471=22222222222

Интересно, как это у тебя получилось? :)

Да, еще вопрос, в какой системе счисления?

Если десятичная система, то уже понятно, что
Т<>0, 1, 5, 6


1 это типа фрагмент подбора, если переменные равны значениям приведенным выше

2 в десятичной системе, и объясни пожалуйста почему Т<>0, 1, 5, 6

зы я очень тупой и в математике ни х-ра не понимаю, так что извини если я чего то непонял

  Вверх
Elfin И выше написанное - тоже м
Дата 28.10.2004, 15:28 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата
Elfin

Цитата
00001*000001
00002*000001
00003*000001
00004*000001
........................
99999*000002
etc.

39916800 - итераций - не очень долго :D
Если простым перебором подайдет, то выложу решение с небольшой оптимизацией

Цитата
00001*000001
00002*000001
00003*000001
00004*000001
........................
99999*000002
etc.


это почему так?

ведь каждому символу должно быть присвоено значение 0..9 причем разным буквам - разные значения, откуда например вот это 00002*000001?? если в слове грохот максимум может быть два нуля - две буквы О а в слове хруст - не больше одного
  Вверх
Girder
Дата 28.10.2004, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: нет
Всего: 155



Цитата(Akina @ 28.10.2004, 10:17)

Ну, во-первых, итераций не более 10! / (10-7)! = 604800.
Значительно меньше... :)
Вот к примеру: решение 'влоб'... и уже на 51 интерации получен первое решение!
C учетом подинтераций, сумарное их количество не будет больше 1000...2000 :)

Решение 'влоб'... :)
Цитата
Начальные условия:
ХРУСТ*ГРОХОТ=РРРРРРРРРРР
x=[0..9]
Xi<>Xj => P<>0 (Г<>0) => T<>0

Решение:
1)Интерация;
P=[2..9],т.к Xi<>Xj и P<>0
2)Итерация;
T*T=(1,4,9,16,25,36,49,64,81) и Xi<>Xj => Т=(2,3,4,7,8,9) и P=(4,9,6,9,4,1);

3)Интерация: T=2;P=4; и Xi<>Xj => CT*OT=(xx44) => C or O = (0,7)or(1,6)or(3,9)or(5,7)or(8,9)
4)Интерация: T=3;P=9; и Xi<>Xj => CT*OT=(xx99) => C or O = (1,2)or(5,8)or(6,7)

5)Интерация: T=2;P=4;C or O = (0,7); и Xi<>Xj и T=T => УСТ*ХОТ=(xx444) => Решений нет
6)Интерация: T=2;P=4;C or O = (1,6); и Xi<>Xj и T=T => УСТ*ХОТ=(xx444) => Решений нет
7)Интерация: T=2;P=4;C or O = (3,9); и Xi<>Xj и T=T => УСТ*ХОТ=(xx444) => Решений нет
8)Интерация: T=2;P=4;C or O = (5,7); и Xi<>Xj и T=T => УСТ*ХОТ=(xx444) => Решений нет
9)Интерация: T=2;P=4;C or O = (8,9); и Xi<>Xj и T=T => УСТ*ХОТ=(xx444) => Решений нет
10)Интерация: T=3;P=9;C or O = (1,2); и Xi<>Xj и T=T => УСТ*ХОТ=(xx999) => Y or X = (4,5)
11)Интерация: T=3;P=9;C or O = (5,8); и Xi<>Xj и T=T => УСТ*ХОТ=(xx999) => Y or X = (0,2)
12)Интерация: T=3;P=9;C or O = (6,7); и Xi<>Xj и T=T => УСТ*ХОТ=(xx999) => Y or X = (0,8)
Промежуточные итоги:
T=3;
P=9;
C or 0 = (1,2) => Y or X = (4,5) => Г=[6..8]
C or 0 = (5,8) => Y or X = (0,2) => Г=[1,4,6,7]
C or 0 = (6,7) => Y or X = (0,8) => Г=[1,2,4,5]
=> Интервалы все определены... можем продолжить так: (Для всех T=3;P=9) ХРУСТ*ГРОХОТ=РРРРРРРРРРР
Проверка на Max:
13)Интерация: C or 0 = (1,2) => 59413*892523=53027468999 => Решений нет
14)Интерация: C or 0 = (5,8) => 29053*798283=23192515999 => Решений нет
15)Интерация: C or 0 = (6,7) => 89063*597873=53248362999 => Решений нет

Продолжаем поиск:
16)Интерация: T=4;P=6; и Xi<>Xj => CT*OT=(xx66) => Решение нет
17)Интерация: T=7;P=9; и Xi<>Xj => CT*OT=(xx99) => C or O = (0,5)or(1,4)or(2,3)
18)Интерация: T=8;P=4; и Xi<>Xj => CT*OT=(xx44) => C or O = (0,1)or(0,6)or(2,9)or(5,1)or(5,6)or(7,9)
19)Интерация: T=9;P=1; и Xi<>Xj => CT*OT=(xx11) => C or O = (0,7)or(2,5)or(3,4)

20)Интерация: T=7;P=9;C or O = (0,5); и Xi<>Xj и T=T => УСТ*ХОТ=(xx999) => Y or X = (2,6)
21)Интерация: T=7;P=9;C or O = (1,4); и Xi<>Xj и T=T => УСТ*ХОТ=(xx999) => Y or X = (0,6)
22)Интерация: T=7;P=9;C or O = (2,3); и Xi<>Xj и T=T => УСТ*ХОТ=(xx999) => Y or X = (4,6)
Промежуточные итоги:
T=7;
P=9;
C or 0 = (0,5) => Y or X = (2,6) => Г=[1,3,4,8]
C or 0 = (1,4) => Y or X = (0,6) => Г=[2,3,5,8]
C or 0 = (2,3) => Y or X = (4,6) => Г=[1,5,8]
=> Интервалы все определены... можем продолжить так: (Для всех T=7;P=9) ХРУСТ*ГРОХОТ=РРРРРРРРРРР
Проверка на Max:
23)Интерация: C or 0 = (0,5) => 69207*895657=61985733999 => Решений нет
24)Интерация: C or 0 = (1,4) => 69017*894647=61745851999 => Решений нет
25)Интерация: C or 0 = (2,3) => 69427*893637=62042535999 => Решений нет

Продолжаем поиск:
26)Интерация: T=8;P=4;C or O = (0,1); и Xi<>Xj и T=T => УСТ*ХОТ=(xx444) => Решение нет
27)Интерация: T=8;P=4;C or O = (0,6); и Xi<>Xj и T=T => УСТ*ХОТ=(xx444) => Решение нет
28)Интерация: T=8;P=4;C or O = (2,9); и Xi<>Xj и T=T => УСТ*ХОТ=(xx444) => Решение нет
29)Интерация: T=8;P=4;C or O = (5,1); и Xi<>Xj и T=T => УСТ*ХОТ=(xx444) => Y or X = (0,3)or(2,6)or(6,7)
30)Интерация: T=8;P=4;C or O = (5,6); и Xi<>Xj и T=T => УСТ*ХОТ=(xx444) => Решение нет
31)Интерация: T=8;P=4;C or O = (7,9); и Xi<>Xj и T=T => УСТ*ХОТ=(xx444) => Y or X = (0,1)or(0,6)or(1,5)or(5,6)
Промежуточные итоги:
T=8;
P=4;
C or 0 = (5,1) => Y or X = (0,3) => Г=[2,6,7]
C or 0 = (5,1) => Y or X = (2,6) => Г=[3,7,9]
C or 0 = (5,1) => Y or X = (6,7) => Г=[2,3,9]
C or 0 = (7,9) => Y or X = (0,1) => Г=[2,3,5,6]
C or 0 = (7,9) => Y or X = (0,6) => Г=[1,2,3,5]
C or 0 = (7,9) => Y or X = (1,5) => Г=[2,3,6]
C or 0 = (7,9) => Y or X = (5,6) => Г=[1,2,3]
=> Интервалы все определены... можем продолжить так: (Для всех T=8;P=4) ХРУСТ*ГРОХОТ=РРРРРРРРРРР
Проверка на Max:
32)Интерация: C or 0 = (5,1);Y or X = (0,3) => 34018*745358=25355588444 => Решений нет
33)Интерация: C or 0 = (5,1);Y or X = (2,6) => 64218*945658=60728265444>44444444444 => Решение возможно!
34)Интерация: C or 0 = (5,1);Y or X = (6,7) => 74618*945758=70570570444>44444444444 => Решение возможно!
35)Интерация: C or 0 = (7,9);Y or X = (0,1) => 14078*649198=09139409444 => Решений нет
36)Интерация: C or 0 = (7,9);Y or X = (0,6) => 64078*549698=35223548444 => Решений нет
37)Интерация: C or 0 = (7,9);Y or X = (1,5) => 54178*549598=29776120444 => Решений нет
38)Интерация: C or 0 = (7,9);Y or X = (5,6) => 64578*349698=22582797444 => Решений нет
Проверка на Min:
39)Интерация: C or 0 = (5,1);Y or X = (2,6) => 24658*341218=08413753444<44444444444 => Решение возможно!
40)Интерация: C or 0 = (5,1);Y or X = (6,7) => 64758*241618=15646698444<44444444444 => Решение возможно!

Продолжаем поиск:
41)Интерация: T=9;P=1;C or O = (0,7); и Xi<>Xj и T=T => УСТ*ХОТ=(xx111) => Y or X = (2,4)
42)Интерация: T=9;P=1;C or O = (2,5); и Xi<>Xj и T=T => УСТ*ХОТ=(xx111) => Y or X = (0,6)
43)Интерация: T=9;P=1;C or O = (3,4); и Xi<>Xj и T=T => УСТ*ХОТ=(xx111) => Y or X = (0,8)or(2,6)
Промежуточные итоги:
T=9;
P=1;
C or 0 = (0,7) => Y or X = (2,4) => Г=[3,5,6,8]
C or 0 = (2,5) => Y or X = (0,6) => Г=[3,4,7,8]
C or 0 = (3,4) => Y or X = (0,8) => Г=[2,5,6,7]
C or 0 = (3,4) => Y or X = (2,6) => Г=[5,7,8]
=> Интервалы все определены... можем продолжить так: (Для всех T=9;P=1) ХРУСТ*ГРОХОТ=РРРРРРРРРРР
Проверка на Max:
44)Интерация: C or 0 = (0,7);Y or X = (2,4) => 41209*817479=33687492111>11111111111 => Решение возможно!
45)Интерация: C or 0 = (2,5);Y or X = (0,6) => 61029*815659=49778853111>11111111111 => Решение возможно!
46)Интерация: C or 0 = (3,4);Y or X = (0,8) => 81039*714849=57930648111>11111111111 => Решение возможно!
47)Интерация: C or 0 = (3,4);Y or X = (2,6) => 61239*814649=49888290111>11111111111 => Решение возможно!
Проверка на Min:
48)Интерация: C or 0 = (0,7);Y or X = (2,4) => 21479*310209=06662979111<11111111111 => Решение возможно!
49)Интерация: C or 0 = (2,5);Y or X = (0,6) => 01659*312029=00517656111<11111111111 => Решение возможно!
50)Интерация: C or 0 = (3,4);Y or X = (0,8) => 01849*213039=00393909111<11111111111 => Решение возможно!
51)Интерация: C or 0 = (3,4);Y or X = (2,6) => 21649*513239=11111111111=11111111111 => Решение НАЙДЕННО!

Проверяем остальные комбинации:
T=8;
P=4;
C or 0 = (5,1) => Y or X = (2,6) => Г=[3,7,9]
C or 0 = (5,1) => Y or X = (6,7) => Г=[2,3,9]
Х4УС8*Г4ОХО8=44444444444
....

Проверяем остальные комбинации:
T=9;
P=1;
C or 0 = (0,7) => Y or X = (2,4) => Г=[3,5,6,8]
C or 0 = (2,5) => Y or X = (0,6) => Г=[3,4,7,8]
C or 0 = (3,4) => Y or X = (0,8) => Г=[2,5,6,7]
Х1УС9*Г1ОХО9=11111111111
...


Это сообщение отредактировал(а) Girder - 28.10.2004, 15:45


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
Alex101
Дата 28.10.2004, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 891
Регистрация: 8.4.2002
Где: Москва

Репутация: нет
Всего: 10



Цитата(Guest @ 28.10.2004, 12:23)

объясни пожалуйста почему Т<>0, 1, 5, 6


ГРОХОТ
х
ХРУСТ
Вначале перемножаюся два одинаковых числа (Т) - последняя цифра произведения, это последняя цифра результата ТхТ. Если бы Т=0,1,5,6, то результат оканчивался бы тоже на Т (0,1,5,6).
Поскольку последняя цифра произведения Р (отличная от Т) =>Т<>0, 1, 5, 6

Это сообщение отредактировал(а) Alex101 - 28.10.2004, 15:41


--------------------
С уважением, А. Фролов.
PM MAIL ICQ   Вверх
Elfin
Дата 28.10.2004, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 28.10.2004

Репутация: нет
Всего: нет



2Girder
Я все таки не совсем понимаю то как ты решил задачу, но вижу что правильно, (я все-таки студент 1го курса) хотелось бы конечено код на паскале
:(

Это сообщение отредактировал(а) Elfin - 28.10.2004, 16:33
PM MAIL   Вверх
Elfin
Дата 31.10.2004, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 28.10.2004

Репутация: нет
Всего: нет



Цитата
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var i, k, k2, l: int64;
x, p, y, c, t, g, o: byte;
str: string[7];

procedure xxx; //значения леаой и праой части выражения, чтоб не путаться - в       
                        //отдельную процедуру
begin         
i:=10000000000;
l:=0;
while i<>0 do
begin
l:=l+p*i;
i:=trunc(i/10);
end;
K:=(x*10000)+(p*1000)+(y*100)+(c*10)+t;
k2:=(g*100000)+(p*10000)+(o*1000)+(x*100)+(o*10)+t;
end;

begin
p:=0;  //начальные значения
x:=0;
y:=0;
c:=0;
t:=1;
g:=0;
o:=0;
k:=1;
k2:=1;

while (k*k2)<>l do

  BEGIN
str:=inttostr(x)+inttostr(p)+inttostr(y)+inttostr©+inttostr(t)+inttostr(g)+inttostr(o);
xxx;

repeat
p:=(p+1) mod 10;
until (p=1) or (p=4) or (p=6) or (p=9);
{не может быть равно этим цифрам потому что либо в записи квадрата числа Т не может быть такой последней цифры либо эта цифра - есть основание самого квадрата}

repeat
t:=(t+1) mod 10; //изменяем Т пока последняя цифра квадрата не равна p
until ((t*t) mod 10)=p;

case p of    //а вот здесь уже не знаю как дальше решать!!!
4: begin
  c:=1;
  o:=0;
  end;
end;

writeln(str);
  END;
 
readln;
  { TODO -oUser -cConsole Main : Insert code here }
end.

Блин задачу уже скоро сдавать... :stena
PM MAIL   Вверх
Elfin
Дата 1.11.2004, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 28.10.2004

Репутация: нет
Всего: нет



:yasno :yasno :yasno
Цитата
program  Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var  i, k, k2, l: int64; j: integer;
x, p, y, c, t, g, o: byte;


procedure xxx; //Ïîäñ÷èòûâàåì çíà÷åíèÿ ëåâîé è ïðàâîé ÷àñòåé
begin
i:=10000000000;
l:=0;
while i<>0 do
begin
l:=l+p*i;
i:=trunc(i/10);
end;
K:=(x*10000)+(p*1000)+(y*100)+(c*10)+t;
k2:=(g*100000)+(p*10000)+(o*1000)+(x*100)+(o*10)+t;
end;



begin
l:=1;
j:=1100000;  //òàê êàê ã<>0 è p<>0
while (k*k2)<>l do
  begin
  x:=j div 1000000;
  p:=(j div 100000) mod 10;
  y:=(j div 10000) mod 10;
  c:=(j div 1000) mod 10;
  t:=(j div 100) mod 10;
  g:=(j div 10) mod 10;
  o:=j mod 10;
  xxx;
  j:=J+1;
  end;

writeln('* x = ',x);
writeln('* p = ',p);
writeln('* y = ',y);
writeln('* c = ',c);
writeln('* t = ',t);
writeln('* g = ',g);
writeln('* o = ',o);
readln;
  { TODO -oUser -cConsole Main : Insert code here }
end.


сам удивился что работает даже если нет условий что одна буква не равна другой!!!
а на переменную j лучше какнть ограничитель до 9999999 поставить хотя и не обязательно,,,
данный код еще раз подтверждает:
"все гениальное всегда просто!"
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0967 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.