![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Пользователь
Регистрация: 18.11.2008
Сообщений: 16
|
![]()
КН-это компьютерные науки!:-)у меня есть кое-что пог простым числам!
Ищем простые числа: var i,j:integer; flag:Boolean; begin Memo1.Clear; for i:=2 to StrToInt(Edit1.Text) do begin flag:=true; For j:=2 to i-1 do if i mod j = 0 then begin flag:=false; break; end; if flag then Memo1.Lines.Add(inttostr(i)); end; end; Представляем их в двоичную сис-му счисления: Function IntToBin(x:integer):string; Var S:string; begin result:=''; while (x div 2)<>0 do begin S:=intToStr(x mod 2); x:=x div 2; insert(S, result, 1); end; S:=intToStr(x mod 2); insert(S, result, 1); end; Отсалась только симметричная последовательность!может таким образом проще её решить??? |
![]() |
![]() |
![]() |
#12 |
Пользователь
Регистрация: 18.11.2008
Сообщений: 16
|
![]()
А что с многоточием???:-)что в этом плохого???
|
![]() |
![]() |
![]() |
#13 |
Пользователь
Регистрация: 18.11.2008
Сообщений: 16
|
![]()
Ну что можно?????
|
![]() |
![]() |
![]() |
#14 |
Пользователь
Регистрация: 25.12.2008
Сообщений: 13
|
![]()
Насчет второй задачи. Перебираем все тройки точек. Проверяем, что данная тройка не лежит на одной прямой. Тогда эта тройка однозначно определеяет окружность. Обозначим точки A, B, C. Тогда центр окружности можно найти как точку пересечения прямой, перпендикулярной отрезку AB и проходящей через его середину, и прямой, перпендикулярной отрезку AC и проходящей через его середину. Точка пересечения прямых ищется решения системы двух линейных уравнений. Радиус окружности зная центр находится элементарно. Затем считаем сколько точек лежит на окружности. И находим, для какой окружности это число максимально.
|
![]() |
![]() |
![]() |
#15 |
Особый статус
Участник клуба
Регистрация: 24.11.2008
Сообщений: 1,535
|
![]()
Да, а можно и четвёрки точек перебирать (по признаку вписанного четырёхугольника: произведения его противоположных сторон в сумме дают произведение его же диагоналей).
Но, повторяю, компьютер (если не подбирать специально входные данные) таких равенств не отыщет! Толщина окружности равна нулю, а все числа в компьютере — рациональные; точных корней в нём просто нет. Мне понравился "дельфийский" вариант с симметричными простыми числами (хоть он и медленный — но верный*), и там осталось полученные строчки (из единиц и нулей) читать слева направо и справа налево, и в случае совпадения — выводить на печать. _______________________ * протестировать мне не на чем
Формула 1 (календарь чемпионата-2016): 26.11.2016 15:55 — Абу-Даби: http://ru.wikipedia.org/wiki/Гран-при_Абу-Даби — (квалификация)! Эфир: http://lion-tv.com/28-match-tv.html
|
![]() |
![]() |
![]() |
#16 | |
Пользователь
Регистрация: 25.12.2008
Сообщений: 13
|
![]() Цитата:
Можно сравнивать числа с использованием абсолютной или относительной погрешности eps, т.е. считать что числа x и y равны, если |x-y| <= eps или |x-y| <= max(|x|, |y|) * eps. Ну а если совсем заморачиваться на точности, то можно привести все входные числа к целым (домножив на достаточно большую степень 10-и), и затем делать проверку в целых числах с помощью вашего равенства. AB*CD+AD*BC=AC*BD => возводим в квадрат обе части => AB^2*CD^2+2*AB*CD*AD*BC+AD^2*BC^2 = AC^2*BD^2 => переносим квадраты в одну часть и возводим в квадрат => 4*AB^2*CD^2*AD^2*BC^2 = (AC^2*BD^2-AB^2*CD^2-AD^2*BC^2)^2. Скорее всего придется воспользоваться длинной арифметикой, чтобы не было переполнения целых чисел. |
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Простые числа | Verochka | Помощь студентам | 14 | 02.12.2008 20:30 |
Простые числа | werser | Помощь студентам | 8 | 18.06.2008 07:24 |
Delphi и простые числа | razoom | Фриланс | 6 | 13.02.2008 14:09 |
простые числа | Акашаев Нурлан | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 05.12.2007 12:23 |