Задача: Проверить, лежит ли окружность [latex]{(x-{a}_{1})}^{2}+{(y-{b}_{1})}^{2}={r}_{1}^{2}[/latex] целиком внутри окружности [latex]{(x-{a}_{2})}^{2}+{(y-{b}_{2})}^{2}={r}_{2}^{2}[/latex] или наоборот.
Тестирование:
Ввод | Вывод | ||||||
[latex]a_{1}[/latex] | [latex]b_{1}[/latex] | [latex]r_{1}[/latex] | [latex]a_{2}[/latex] | [latex]b_{2}[/latex] | [latex]r_{2}[/latex] | Печать | Комментарий |
0 | 0 | 0 | 0 | 0 | 0 | 2 в 1 | Пройден |
0 | 0 | 3 | 0 | 0 | 1 | 2 в 1 | Пройден |
0 | 0 | 2 | 0 | 0 | 5 | 1 в 2 | Пройден |
1 | 1 | 3 | 3 | 1 | 1 | 2 в 1 | Пройден |
2 | 2 | 3 | 6 | 2 | 4 | —— | Пройден |
24 | 27 | 51 | 96 | 48 | 20 | —— | Пройден |
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#include <iostream> #include <math.h> int main() { int a1, b1, r1, a2, b2, r2; scanf("%d %d %d %d %d %d", &a1, &b1, &r1, &a2, &b2, &r2); double dist = sqrt((a1-a2)*(a1-a2)+(b1-b2)*(b1-b2)); if(dist <= abs(r2 - r1)){ printf((r1 < r2) ? "Окружность 1 лежит в окружности 2" : "Окружность 2 лежит в окружности 1"); } else printf("Ничто ни в чем не лежит\n"); return 0; } |
Идея решение: Расстояние между центрами окружностей [latex]({a}_{1};{b}_{1})[/latex] и [latex]({a}_{2};{b}_{2})[/latex] должно быть меньше, чем модуль разности их радиусов [latex]\left|{r}_{1}-{r}_{2}\right|[/latex]. Это условие необходимо и достаточно для того, чтобы одна из окружностей была вложена в другую.
Засчитано, только поставьте ссылку на работающий код с тестами в ideOne