Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как оптимизировать, или обойтись без перебора??? 
:(
    Опции темы
sofware
  Дата 4.12.2006, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 30.11.2006

Репутация: нет
Всего: 1



Дано радиус круга R(R<=20000).Нужно найти количество целочисульных точек, пренадлежащих этому кругу.
Для 5 будет 81.Для 3 будет 27.
Вот мой код, он работает, но очень долго:
Код

var r,a,b,n,k,i,j:longint;
begin
read(r);
for i:=1 to r do
for j:=1 to r do
 begin
  a:=i;b:=j;
  if (r*r-a*a<b*b)and(r*r-b*b<a*a) then inc(k);
 end;
k:=sqr(r*2+1)-k*4;
write(k);
end.

PM MAIL   Вверх
Zero
Дата 4.12.2006, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Но как вариант, можно попробывать так:
1. Находишь площадь круга;
2. Находишь, область площади, которая концовку точек делает дробной;
3. вычитаешь результат два из результата один;
4. Делиш результат три, на условную площадь точки.
PM MAIL ICQ   Вверх
Dottik
Дата 9.12.2006, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 13.10.2006
Где: Ukraine

Репутация: нет
Всего: 2



Цитата

Для 5 будет 81.Для 3 будет 27.


1) На полуосях всегда будет лежать R точек. Есть 4 полуоси + точка(0,0).
Тоесть на осях лежит (4*R+1) точка. 
2) Круг семитричен. Достаточно рассмотреть 1 четверть.

Из этого следует, что ответ на задачу имеет вид: 4*S + 4*R + 1
В случае 81 = 4*15 + 4*5 + 1
Ответ, который вы дали для 3 неверен.
Правильный ответ:
4*4+4*3+1 = 29

Вот код моей програмы, алгоритм O®

Код

program Circle;

var
  i, j, r, S: Integer;

begin
  ReadLn(r);
  S := 0;
  for i := 1  to r do
  begin
    S := S + Trunc(Sqrt(r*r-i*i));
  end;
  S := 4*S + 4*r+1;
  Writeln(S);
end.



PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0698 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.