|
Вопрос # 5 265/ вопрос решён / |
|
Доброго времени суток, уважаемые эксперты! Помогите пожалуйста с программами к данным задачам...
1)Заменить буквы цифрами так, чтобы соотношение оказалось
верным (одинаковым буквам соответствуют одинаковые цифры,
разным — разные):
ХРУСТ * ГРОХОТ = РРРРРРРРРРР.
2)Вывести на экран календарь на текущий год.
bboy-funky@yandex.ru
 |
Вопрос задал: Олег FunkyMen (статус: Посетитель)
Вопрос отправлен: 7 мая 2011, 15:28
Состояние вопроса: решён, ответов: 1.
|
Ответ #1. Отвечает эксперт: Толяныч
Здравствуйте, Олег FunkyMen!
Можно сделать очень просто : для всех 11-значных чисел , состоящих из одинаковых цифр, находим пары делитель - частное так, чтобы
- делитель был пятизначным
- частное было шестизначный
- промзведение их равно исходному 11-значному числу.
Вопреки опасениям, таких пар находится всего 4.
И из них выбираем пару, соответствующую заданному условию.
8 21649 513239 11111111111
Х=2 Р=1 У=6 С=4 Т=9 Г=5 О=3
Приложение: Переключить в обычный режим- unit Unit1;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls, ComCtrls;
-
- type
- TForm1 = class(TForm)
- Memo1: TMemo;
- procedure FormCreate(Sender: TObject);
- procedure FormClick(Sender: TObject);
- private
- { Private declarations }
- public
-
- end;
-
- var
- Form1: TForm1 ;
- I,J,N,N1 : Int64 ;
- M1,M2 : array [0..1024] of Int64 ;
- implementation
-
- {$R *.dfm}
-
-
- procedure TForm1.FormCreate(Sender: TObject);
-
- var
- Index: Integer;
- begin
- Memo1.Clear ; N := 0 ;
- J := 99999999999 ; Memo1.Lines.Add( Format('%14d',[J]))
- end;
-
- procedure TForm1.FormClick(Sender: TObject);
- var ix,iy : integer ;
- stro,stro1,stro2 : string ;
- begin
- for ix := 1 to 9 do
- begin
- stro := Format('%d=',[ix]) ; N1 := 0 ;
- I := ix * 11111111111 ;
- for iy := 2345 to 98765 do
- begin J := I div iy ; if ((J * iy = I) and (J<=999999) ) then
- begin Inc (N1) ; M1[N] := iy ; M2[n] := J; Inc (N) end ;
- end ;
- stro := stro + Format ('%11d',[N1]) ; Memo1.Lines.Add(stro)
- end ;
- stro := Format ('%11d',[N]) ; Memo1.Lines.Add(stro) ;
- for ix := 0 to N-1 do
- begin J := M1[ix] * M2[ix] ;
- stro1 := Format('%5d',[M1[ix]]) ; stro2 := Format('%6d',[M2[ix]]) ;
- stro := Format('%11d',[J]) ;
- if (stro1[2] = stro2[2]) and (stro1[2] = stro[1]) then
- begin
- Memo1.Lines.Add
- (Format ('%2.0d %5.5d %7d %14d',[ix,M1[ix],M2[ix],J]) ) ;
-
-
-
- end ;
- end ;
- end;
-
- end.
-
 |
Ответ отправил: Толяныч (статус: 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 (статус: Посетитель), 7 мая 2011, 18:44 [#2]:
Хера се... масштабно.
7 for'ов и 1 охеренный if
только вот условие, для проверки на совпадение я так и не извлек. Что то даже и мыслей нет.
|
|
bugmenot (статус: 3-ий класс), 7 мая 2011, 20:58 [#3]:
в чем заключается помощь?
а то я уже морально помогаю изо всех сил
виконання програми розпочинається з того самого мiсця, де призупинилося.
|
|
Олег FunkyMen (статус: Посетитель), 7 мая 2011, 21:31 [#4]:
Программа нужна, просто такое мне не по силам... Спасибо за моральную помощь конечно!)))
|
|
Олег 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 (статус: Посетитель), 7 мая 2011, 21:37 [#6]:
Скажите пожалуйста что делает процедура это или функция не знаю
frac ?
|
|
bugmenot (статус: 3-ий класс), 7 мая 2011, 21:44 [#7]:
возвращает дробную часть аргумента
F1 же!
виконання програми розпочинається з того самого мiсця, де призупинилося.
|
|
Толяныч (статус: 4-ый класс), 7 мая 2011, 21:45 [#8]:
Задачка очень простая, но интересная - не решать в лоб, а включить думалку.
А печатать календарь - это пусть автор поработает - это не просто, а очень просто.
32 и 35 строчки не нужны - это осколки прежней программы, которую я взял за \'болванку\' .
Насчет подключения модулей - всех их подключает сама Дельфи при генерации исходной формы.
|
|
bugmenot (статус: 3-ий класс), 7 мая 2011, 21:49 [#9]:
а чего там интересного? просто числа в тридцатитрёхричной системе...
виконання програми розпочинається з того самого мiсця, де призупинилося.
|
7 мая 2011, 21:49: Статус вопроса изменён на решённый (изменил автор вопроса — Олег FunkyMen)
|
Толяныч (статус: 4-ый класс), 7 мая 2011, 23:43 [#10]:
bugmenot:
> а чего там интересного? просто числа в тридцатитрёхричной системе...
Да я как-то больше привык к двадцатидевятиричной...
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|