Всем привет! Вот только недавно пришел со школы. Сегодня прошел школьный этап Всероссийской Олимпиады Школьников по информатике. Я написал 4 из 5 задач (надеюсь правильно). Впрочем они были халявные. (8 класс)
А вот 5-ая задача оказалась сложной. Посмотрите, может объясните мне, как ее решать...
Вот суть задачи: Даны координаты центра круга x и y (-100 <= x, y <= 100) и его радиус R (1 <= R <= 100)* Найти кол-во целых клеток внутри этого круга**.
* Все данные величины целочисленны **Сторона клетки равна 1
Оригинальный текст задачи: Младший брат постоянно отвлекает старшего своими вопросами. Сегодня он придумал очеред- ную игру. Нарисовав круг с центром в точке с целочисленными координатами (–100 <= m, n <= 100) и ра- диусом 1 <= R <= 100 на бумаге в клеточку (ширина клеточки принимается за единичный отрезок), он заста- вил старшего брата посчитать, сколько целых клеточек в этом круге будет находиться. Чтобы самому не подсчитывать это число, старший брат написал программу на компьютере, которая по заданным значени- ям m, n и R выводит число целых клеточек в круге. Напишите и Вы такую программу. Входные данные: В строке вводятся три целых числа m, n и R, разделенных пробелом. Выходные данные: Целое число – количество целых клеточек в круге.
Если кому интересно. вот условия всех задач: http://olympic.nsu.ru/acmSchool/archive/2011-2012/school/8-9.pdf
[quote]Ничто не истина, всё дозволено[/quote]
Сообщение отредактировал Lord_F - Вторник, 18 Октября 2011, 13:36
Добавлено (18.10.2011, 12:57) --------------------------------------------- И да, не тот раздел. Эту задачу стоит решать на жабе, где разномерные массивы, а я так сфейлился... Печаль
2. Берем квадрат точек 200 на 200. Проверяем вручную каждую точку на ее вхождение в круг. Кто забыл как: по расстоянию от центра, коим есть радиус, с помощью теоремы Пифагора.
Сибирский, Язык программирования значения не имеет. Важно наличие моска. Windmill 2
считаю что центр окружности есть начало отсчета клеток(угол клетки лежит в центре окружности) тогда обсчитываю четверть окружности: int Summa; for(int x=1; x<R; x++) { Summa=Summa+(int)(pow(R*R-x*x, 0.5)); } Summa=4*Summa;//узнаю всего количество клеток что делается: проецирую с горизонтали на дугу окружности линию и узнаю высоту в клетках и так для каждого ряда клеток
Сообщение отредактировал Faeton - Вторник, 18 Октября 2011, 13:51