Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 265

/ вопрос решён /

Доброго времени суток, уважаемые эксперты! Помогите пожалуйста с программами к данным задачам...

1)Заменить буквы цифрами так, чтобы соотношение оказалось
верным (одинаковым буквам соответствуют одинаковые цифры,
разным — разные):
ХРУСТ * ГРОХОТ = РРРРРРРРРРР.

2)Вывести на экран календарь на текущий год.

bboy-funky@yandex.ru

Олег FunkyMen Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: Олег FunkyMen (статус: Посетитель)
Вопрос отправлен: 7 мая 2011, 15:28
Состояние вопроса: решён, ответов: 1.

Ответ #1. Отвечает эксперт: Толяныч

Здравствуйте, Олег FunkyMen!

Можно сделать очень просто : для всех 11-значных чисел , состоящих из одинаковых цифр, находим пары делитель - частное так, чтобы
- делитель был пятизначным
- частное было шестизначный
- промзведение их равно исходному 11-значному числу.
Вопреки опасениям, таких пар находится всего 4.
И из них выбираем пару, соответствующую заданному условию.

8 21649 513239 11111111111
Х=2 Р=1 У=6 С=4 Т=9 Г=5 О=3

Приложение:
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7. Dialogs, StdCtrls, ComCtrls;
  8.  
  9. type
  10. TForm1 = class(TForm)
  11. Memo1: TMemo;
  12. procedure FormCreate(Sender: TObject);
  13. procedure FormClick(Sender: TObject);
  14. private
  15. { Private declarations }
  16. public
  17.  
  18. end;
  19.  
  20. var
  21. Form1: TForm1 ;
  22. I,J,N,N1 : Int64 ;
  23. M1,M2 : array [0..1024] of Int64 ;
  24. implementation
  25.  
  26. {$R *.dfm}
  27.  
  28.  
  29. procedure TForm1.FormCreate(Sender: TObject);
  30.  
  31. var
  32. Index: Integer;
  33. begin
  34. Memo1.Clear ; N := 0 ;
  35. J := 99999999999 ; Memo1.Lines.Add( Format('%14d',[J]))
  36. end;
  37.  
  38. procedure TForm1.FormClick(Sender: TObject);
  39. var ix,iy : integer ;
  40. stro,stro1,stro2 : string ;
  41. begin
  42. for ix := 1 to 9 do
  43. begin
  44. stro := Format('%d=',[ix]) ; N1 := 0 ;
  45. I := ix * 11111111111 ;
  46. for iy := 2345 to 98765 do
  47. begin J := I div iy ; if ((J * iy = I) and (J<=999999) ) then
  48. begin Inc (N1) ; M1[N] := iy ; M2[n] := J; Inc (N) end ;
  49. end ;
  50. stro := stro + Format ('%11d',[N1]) ; Memo1.Lines.Add(stro)
  51. end ;
  52. stro := Format ('%11d',[N]) ; Memo1.Lines.Add(stro) ;
  53. for ix := 0 to N-1 do
  54. begin J := M1[ix] * M2[ix] ;
  55. stro1 := Format('%5d',[M1[ix]]) ; stro2 := Format('%6d',[M2[ix]]) ;
  56. stro := Format('%11d',[J]) ;
  57. if (stro1[2] = stro2[2]) and (stro1[2] = stro[1]) then
  58. begin
  59. Memo1.Lines.Add
  60. (Format ('%2.0d %5.5d %7d %14d',[ix,M1[ix],M2[ix],J]) ) ;
  61.  
  62.  
  63.  
  64. end ;
  65. end ;
  66. end;
  67.  
  68. end.
  69.  


Ответ отправил: Толяныч (статус: 4-ый класс)
Время отправки: 7 мая 2011, 21:42
Оценка за ответ: 5

Комментарий к оценке: Спасибо огромное!

Мини-форум вопроса

Всего сообщений: 10; последнее сообщение — 7 мая 2011, 23:43; участников в обсуждении: 4.
Вадим К

Вадим К (статус: Академик), 7 мая 2011, 17:56 [#1]:

ХРУСТ * ГРОХОТ = РРРРРРРРРРР.
это
21649 * 513239 = 11111111111
Как я это сосчитал? просто составил на хаскеле маленькое предложение
let d = [0..9]
[(h,r,u,s,t,g,r,o,h,o,t) | h <-d, r <-d, u <-d, s <- d, t <-d, g <-d, o <-d, (h*10000+r*1000+u*100+s*10+t) *
(g*100000+r*10000+o*1000+h*100+o*10+t) == r * 11111111111, h /= r, h /= u, h /= s, h /= t, h /= g, h /= o, r /= u, r /=
s, r /= t, r /= g, u /= s, u /= t, u /= g, u /= o, s /= t, s /= g, s /= o, t /= g, t/= o, g /= o]
То есть, решение есть и оно одно. На паскале это конечно будет выглядеть страшнее и его в принципе видно. Это 7 циклов для каждой переменной от 0 до 9 (хотя на самом то деле х и г, р не могут быть нулями, так что можно улучшить - брать от одного до девяти).
В средине цикла большой if, который проверяет, что переменные не совпадают и если все хорошо, считает контрольное выражение.
Галочка "подтверждения прочтения" - вселенское зло.
Олег FunkyMen

Олег FunkyMen (статус: Посетитель), 7 мая 2011, 18:44 [#2]:

Хера се... масштабно.
7 for'ов и 1 охеренный if
только вот условие, для проверки на совпадение я так и не извлек. Что то даже и мыслей нет.
bugmenot

bugmenot (статус: 3-ий класс), 7 мая 2011, 20:58 [#3]:

в чем заключается помощь?
а то я уже морально помогаю изо всех сил
виконання програми розпочинається з того самого мiсця, де призупинилося.

Олег FunkyMen

Олег FunkyMen (статус: Посетитель), 7 мая 2011, 21:31 [#4]:

Программа нужна, просто такое мне не по силам... Спасибо за моральную помощь конечно!)))
Олег FunkyMen

Олег FunkyMen (статус: Посетитель), 7 мая 2011, 21:35 [#5]:

Я нашел)
program zd18_V1;
uses Crt;
var s, s1, s2, k : real;  i: integer;
{S1 - ХРУСТ, S2 - ГРОХОТ, S- РРРРРРРРРРР}
begin
ClrScr;
for i:=1 to 9 do
begin
s:=i*1e+10+i*1e+9+i*1e+8+i*1e+7+i*1e+6+i*1e+5+i*1e+4+i*1e+3+i*100+i*10+i;
k:=10000; {ХРУСТ – 5-значное число}
While k<=99999 do
begin
if frac(s/k) = 0 then
begin
s1:=k; s2:=s/s1;
if s2<=999999 then  writeln(s1:6:0,' * ',s2:6:0,' = ',s:8:0)
end;
k:=k+1
end
end;  {Условие задачи ХРУСТ * ГРОХОТ = РРРРРРРРРРР}
end.{Правильный ответ 21649 * 513239 = 11111111111}
Олег FunkyMen

Олег FunkyMen (статус: Посетитель), 7 мая 2011, 21:37 [#6]:

Скажите пожалуйста что делает процедура это или функция не знаю
frac ?
bugmenot

bugmenot (статус: 3-ий класс), 7 мая 2011, 21:44 [#7]:

возвращает дробную часть аргумента
F1 же!
виконання програми розпочинається з того самого мiсця, де призупинилося.

Толяныч

Толяныч (статус: 4-ый класс), 7 мая 2011, 21:45 [#8]:

Задачка очень простая, но интересная - не решать в лоб, а включить думалку.
А печатать календарь - это пусть автор поработает - это не просто, а очень просто.

32 и 35 строчки не нужны - это осколки прежней программы, которую я взял за \'болванку\' .

Насчет подключения модулей - всех их подключает сама Дельфи при генерации исходной формы.
bugmenot

bugmenot (статус: 3-ий класс), 7 мая 2011, 21:49 [#9]:

а чего там интересного? просто числа в тридцатитрёхричной системе...
виконання програми розпочинається з того самого мiсця, де призупинилося.

7 мая 2011, 21:49: Статус вопроса изменён на решённый (изменил автор вопроса — Олег FunkyMen)

Толяныч

Толяныч (статус: 4-ый класс), 7 мая 2011, 23:43 [#10]:

bugmenot:

> а чего там интересного? просто числа в тридцатитрёхричной системе...

Да я как-то больше привык к двадцатидевятиричной...

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:47
Выполнено за 0.03 сек.