Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2008.01.27;
Скачать: [xml.tar.bz2];

Вниз

проверка повторных цыфр и лаба   Найти похожие ветки 

 
Oyeme   (2007-12-19 11:51) [0]

Числа 48 и 159 характерны тем, что в выражении 48*159=7632 использованы 9 разных цифр (без нуля) по одному разу каждая. Найти все такие пары чисел.

это задание....)
я некак немогу понять как мне начать...
2 цикла.. и потом их проверять число если там повторные цыфры,то есть число 133 неподходит а в числк 143 нет повторение..
Помогите пожалуйста!!!


 
Сергей М. ©   (2007-12-19 12:01) [1]


> некак немогу понять как мне начать


Начать следует с разработки матем.модели решения.


 
oldman ©   (2007-12-19 12:06) [2]


> Найти все такие пары чисел


два вложенных цикла от 1 до 987
не очень и долго


 
Oyeme   (2007-12-19 12:19) [3]

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


 
oldman ©   (2007-12-19 12:21) [4]

1. Цифр в множестве должно быть именно 9.
2. Самый простой способ проверки - цикл от 1 до 9. Если все цифры присутствуют, значит они не повторяются.
:)


 
Oyeme   (2007-12-19 12:26) [5]

можно поподробней?...
вот у меня 48*159 так тут нет повторных цыфр и они проверенны функцией потом переумножаються и так же проверяються а потом добовляються в мемо... вот как эту функцию написать..


 
oldman ©   (2007-12-19 12:37) [6]

48*159=7632.
Последовательность будет "481597632".
В ней 9 цифр.
Проверяем от 1 до 9, присутствуют ли они.
Получаем, что да.

Последовательность нас устраивает.


 
oldman ©   (2007-12-19 12:38) [7]

Или ты не можешь добавить в Memo строку "48*159=7632"


 
Рамиль ©   (2007-12-19 12:45) [8]

function Test(const a, b: integer): boolean
var
 a: array[1..9] of boolean;
 s: string;
begin
 for i := 1 to 9 do a[i] := false;
 s = IntToStr(a) + IntToStr(b) + IntTostr(a*b);
 Result := false;
 for i := 1 to length(s) do
 begin
   n := StrToInt(s[i]);
   if a[n] then exit else a[n] := true;
 end;
 Result := true;
 for i := 1 to 9 do
   Result := Result and a[i];
end;


 
Рамиль ©   (2007-12-19 12:46) [9]

Так, на вскидку в лоб:)


 
MBo ©   (2007-12-19 13:19) [10]

пусть первый сомножитель A не длиннее второго B.
Длина произведения C будет равна сумме длин A и B или на единицу больше.
Последней цифрой C может быть 1, 2, 3, 4, 6, 7, 8, для каждой из этих цифр последние цифры A и B берутся из небольшого количества пар, например,
3  - 7,9
6 -  2,3; 4,9; 7,8
Итак, 3 цифры ставим на свои места, что сильно сокращает перебор


 
oldman ©   (2007-12-19 13:26) [11]


> MBo ©   (19.12.07 13:19) [10]


Что-то я думая, что проверка всех условий перебора займет больше времени, чем тупой перебор без условий.
Могу ошибаться, имхо.
Но для лабы, ессно, условий надо понакрутить.


 
Oyeme   (2007-12-19 13:29) [12]

Рамиль спасибо))) но он почему то тут выдаёт ошибку
s := IntToStr(a) + IntToStr(b) + IntTostr(a*b); here is no overloaded version in "IntToStr that can be called with these arguments..


 
Oyeme   (2007-12-19 13:32) [13]

мм..)) спасибо за помощь..)) мне бы токо сделеать..)) а как уже..)) знаю... способюы разные.. собрать главное это всё блиннн..))я токо начинающий в delphi..))


 
Дуболом   (2007-12-19 13:32) [14]

Порядка 400 вариантов придется посмотреть.
С(6,3)=20 а про 3 цифири уже отписали.


 
oldman ©   (2007-12-19 13:36) [15]



> function Test(const a, b: integer): boolean
> var
>  a: array[1..9] of boolean;
>  s: string;
> begin


имена дублируются...


 
Oyeme   (2007-12-19 13:36) [16]

это да...)) delphi мне выдал...куча ощибок.. :(


 
oldman ©   (2007-12-19 13:39) [17]


> var
>  a: array[1..9] of boolean;
>  s: string;


Добавить
i,n: integer;


 
Oyeme   (2007-12-19 13:40) [18]

а вот что делать  с
function Test(const a, b: integer): boolean
> var
>  a: array[1..9] of boolean;

а - оно повторяеться


 
oldman ©   (2007-12-19 13:41) [19]


> Oyeme   (19.12.07 13:36) [16]
> это да...)) delphi мне выдал...куча ощибок.. :(


Идею понял?
А уж синтаксис сам, братец...
Лаба твоя. На лекции ходил?


 
Oyeme   (2007-12-19 13:44) [20]

ходил ходил)) спасбо за помощь..я очень ВаМ благодарен..))
учусь на вечернем и дают буквально половину того чего нужно..))
для начинающего мне трудновато.. :(
я токо тут помогли..


 
Рамиль ©   (2007-12-19 15:01) [21]

Да я даже компилировать не пытался, в браузере написал. Идея та понятна...


 
oldman ©   (2007-12-19 15:31) [22]

А вот взял я и написал тупым перебором.
Таких кмбинаций всего семь!

Oyeme, лови (все равно уж написано, правда написано тупо).

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   Memo1: TMemo;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
i,j,k: integer;
s: string;
begin
 for i:=1 to 99 do begin
   for j:=1 to 999 do begin
     k:=i*j;
     s:=inttostr(i)+inttostr(j)+inttostr(k);
     if (length(s)=9) and
     (pos("1",s)>0) and
     (pos("2",s)>0) and
     (pos("3",s)>0) and
     (pos("4",s)>0) and
     (pos("5",s)>0) and
     (pos("6",s)>0) and
     (pos("7",s)>0) and
     (pos("8",s)>0) and
     (pos("9",s)>0) and
     (pos("0",s)=0) then
     memo1.lines.add(inttostr(i)+"*"+inttostr(j)+"="+inttostr(k));
   end;
 end;
end;

end.


 
oldman ©   (2007-12-19 15:33) [23]

Да, кому интересно:

12*483=5796
18*297=5346
27*198=5346
28*157=4396
39*186=7254
42*138=5796
48*159=7632

В тексте предыдущем проверку на (pos("0",s)=0) убери.
Время работы кода - 2 секунды


 
Oyeme   (2007-12-19 15:40) [24]

oldman Спасибоооооооооооооооооооооо!!!! очень тебе благодарен!!!
здоровья тебе!!! спасибо спас!!!
удачи!!!!!!!!!!!!!!!)))
очень!!!


 
Сергей М. ©   (2007-12-19 16:35) [25]

Картина маслом - "Oyeme на зачете лабы":

Препод: - Эт чиво такое ? Как работает ? Поясни каждую цЫфру в этом коде ..
Oyeme: - Нинаю я. Так Oldman (c) написал. Как насчет зачета по лабе ?


 
oldman ©   (2007-12-19 16:43) [26]


> Сергей М. ©   (19.12.07 16:35) [25]


Сергей, вспомни студенчество, выпей и не юродствуй
:)))

Ему весь день объясняли, на фига там цЫфры.
Если не понял, так ему и надо!!!


 
Oyeme   (2007-12-19 17:08) [27]

не...- я досконально разеру..))!!!
за это спасибо!!!
да всё понятно))) циклы...а вот ...что это делает pos("1",s)....м...


 
Jeer ©   (2007-12-19 18:26) [28]

Действительно, и шо он этот pos() там делает ?


 
авыф   (2007-12-19 18:41) [29]


> Jeer ©   (19.12.07 18:26) [28]

    if (length(s)=9) and
      (s[1]<>s[2]) and
      (s[2]<>s[3]) and
      (s[3]<>s[4]) and
       ....
   then
    memo1.lines.add(inttostr(i)+"*"+inttostr(j)+"="+inttostr(k));


 
Sha ©   (2007-12-20 14:47) [30]

> oldman ©   (19.12.07 15:33) [23]
> Время работы кода - 2 секунды

Можно так

procedure TMainFrm.Button3Click(Sender: TObject);
const
 a: array["0".."9"] of integer= (0,1,2,4,8,16,32,64,128,256);
var
 i, j: integer;
 s: string;
begin
for i:=12 to 98 do begin
  for j:=123 to 987 do begin
    s:=inttostr(i*j)+inttostr(100*j+i);
    if (length(s)=9)
    and (a[s[1]]+a[s[2]]+a[s[3]]+a[s[4]]+a[s[5]]+a[s[6]]+a[s[7]]+a[s[8]]+a[s[9]]=511)
    then RichEd.lines.add(s+"  "+inttostr(i)+"*"+inttostr(j)+"="+inttostr(i*j));
  end;
end;
end;


 
Сергей М. ©   (2007-12-20 15:01) [31]


> oldman ©   (19.12.07 16:43) [26]


Вспомнил. Всплакнул-понастальжировал. Нихрена подобного (по кр.мере за собой) не вспомнил. Выпил. Пивка бутылочку. Опять вспомнил, опять нихрена не вспомнил. Заказал Шопена - видать пора, коль с двух раз не удалось вспомнить)


 
Oyeme   (2007-12-21 16:21) [32]

спасибо Вам!!!!!!!!



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2008.01.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.008 c
2-1198427858
Ezorcist
2007-12-23 19:37
2008.01.27
read div real


15-1198157501
Ins
2007-12-20 16:31
2008.01.27
Delphi Puzzles


2-1198874994
Efir
2007-12-28 23:49
2008.01.27
DoubleClick в OpenDialog


1-1192971907
Dimmitt
2007-10-21 17:05
2008.01.27
Синхронная прокрутка двух Memo


9-1165928759
Creative
2006-12-12 16:05
2008.01.27
Как рисовать 3D и 2D объекты в одной сцене?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский