Задача:
Пусть [latex]D[/latex] — заштрихованная часть плоскости и пусть u определяется по [latex]x[/latex] и [latex]y[/latex] следующим образом: [latex] u=\begin{cases}x^{2}-1, ; \text{ if } (x, y)\in D \\sqrt{\left| x-1 \right| } ; \text{ another case }\end{cases}[/latex] (запись [latex] (x, y)\in D [/latex] означает, что точка с координатами [latex]x, y[/latex] принадлежит [latex]D[/latex]).
Даны действительные числа [latex]x[/latex] и [latex]y.[/latex] Определить [latex]u.[/latex]
№ | Вход | Выход | |
---|---|---|---|
[latex]x[/latex] | [latex]y[/latex] | [latex]u[/latex] | |
1 | 0.3 | 0.3 | 0.836660 |
2 | 1 | 1 | 0.000000 |
3 | 2 | 2 | 1.000000 |
4 | 0 | 0 | -1.000000 |
Код на языке C++:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#include <iostream> #include <cmath> using namespace std; int main() { float x, y, u; scanf("%f%f", &x, &y); float a=x*x+y*y; if((y<0)||(a>1)||((x>0)&&(a<0.3))) { printf("u=%f", sqrt(abs(x-1))); } else { printf("u=%f",x*x-1); } return 0; } |
Код на языке Java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import java.util.*; import java.lang.*; import java.io.*; class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); PrintWriter out = new PrintWriter(System.out); float x = in.nextFloat(); float y = in.nextFloat(); float a=x*x+y*y; if((y<0)||(a>1)||((x>0)&&(a<0.3))){ System.out.println(Math.sqrt(Math.abs(x-1))); } else{ System.out.println(x*x-1); } } } |
Решение:
Для решения задачи проверим не принадлежит ли выбранная точка полуплоскости [latex] y<0 [/latex].Затем следует проверить не лежит ли выбранная точка вне полукруга, радиус которого равен 1 . Следующим действием нужно проверить не находиться ли точка в вырезанной четвертине маленького круга, радиус которого равен 0.3 .
Ссылки:
Онлайн компилятор ideone C++ .
Онлайн компилятор ideone Java .
Пожалуйста, сделайте правильные отступы в коде на Java.