Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.12.2008, 19:46   #11
Verochka
Пользователь
 
Регистрация: 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;

Отсалась только симметричная последовательность!может таким образом проще её решить???
Verochka вне форума Ответить с цитированием
Старый 28.12.2008, 19:52   #12
Verochka
Пользователь
 
Регистрация: 18.11.2008
Сообщений: 16
По умолчанию

А что с многоточием???:-)что в этом плохого???
Verochka вне форума Ответить с цитированием
Старый 30.12.2008, 19:37   #13
Verochka
Пользователь
 
Регистрация: 18.11.2008
Сообщений: 16
По умолчанию

Ну что можно?????
Verochka вне форума Ответить с цитированием
Старый 31.12.2008, 00:05   #14
vector
Пользователь
 
Регистрация: 25.12.2008
Сообщений: 13
По умолчанию

Насчет второй задачи. Перебираем все тройки точек. Проверяем, что данная тройка не лежит на одной прямой. Тогда эта тройка однозначно определеяет окружность. Обозначим точки A, B, C. Тогда центр окружности можно найти как точку пересечения прямой, перпендикулярной отрезку AB и проходящей через его середину, и прямой, перпендикулярной отрезку AC и проходящей через его середину. Точка пересечения прямых ищется решения системы двух линейных уравнений. Радиус окружности зная центр находится элементарно. Затем считаем сколько точек лежит на окружности. И находим, для какой окружности это число максимально.
Делаю домашние задания, курсовые студентам и школьникам.
email: solverr@mail.ru
ICQ: 472337610
vector вне форума Ответить с цитированием
Старый 31.12.2008, 04:04   #15
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

Да, а можно и четвёрки точек перебирать (по признаку вписанного четырёхугольника: произведения его противоположных сторон в сумме дают произведение его же диагоналей).
Но, повторяю, компьютер (если не подбирать специально входные данные) таких равенств не отыщет!
Толщина окружности равна нулю, а все числа в компьютере — рациональные; точных корней в нём просто нет.

Мне понравился "дельфийский" вариант с симметричными простыми числами (хоть он и медленный — но верный*), и там осталось полученные строчки (из единиц и нулей) читать слева направо и справа налево, и в случае совпадения — выводить на печать.
_______________________
* протестировать мне не на чем
Sasha_Smirnov вне форума Ответить с цитированием
Старый 31.12.2008, 08:22   #16
vector
Пользователь
 
Регистрация: 25.12.2008
Сообщений: 13
По умолчанию

Цитата:
Сообщение от Sasha_Smirnov Посмотреть сообщение
Да, а можно и четвёрки точек перебирать (по признаку вписанного четырёхугольника: произведения его противоположных сторон в сумме дают произведение его же диагоналей).
Но, повторяю, компьютер (если не подбирать специально входные данные) таких равенств не отыщет!
Толщина окружности равна нулю, а все числа в компьютере — рациональные; точных корней в нём просто нет.
Спасибо за формулу для вписанного четырехугольника, не знал.
Можно сравнивать числа с использованием абсолютной или относительной погрешности 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. Скорее всего придется воспользоваться длинной арифметикой, чтобы не было переполнения целых чисел.
Делаю домашние задания, курсовые студентам и школьникам.
email: solverr@mail.ru
ICQ: 472337610
vector вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Простые числа 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