Поиск по этому блогу

пятница, 2 декабря 2016 г.

Решение олимпиадной задачи

Задача A. "Световой луч" (10 баллов)

Дано действительное число φ (0<φ<π). Из точки (1, 1) под углом φ к прямой х=1 выпущен световой луч (см. рис.). Найти точку оси ординат, в которой луч падает на эту ось. Если φ<π/4, то луч сначала отразится по закону "угол падения равен углу отражения" от оси абсцисс.

Формат входных данных:
С клавиатуры вводиться единственное число φ (0 < φ < 3,14159)
Формат выходных данных:
Вывести на экран единственное число: значение ординаты точки пересечения светового луча с осью ординат. Число вывести с точностью до трех знаков после запятой.
Пример:

Ввод

Вывод
0.78539
1.05719

0.000
0.436


Программа на языке Паскаль:
program luch;
uses crt;
var  f,f1:text;
     fi,y,x:real;
begin
clrscr;
    assign(f,'input.txt');
 reset(f);
 assign(f1,'output.txt');
 rewrite(f1);
 readln(f,fi);
 if fi=pi/2 then y:=1;
 if fi<pi/2 then
 begin
  x:=sin(fi)/cos(fi);
  if abs(1-x)<=0.001 then y:=0 else begin x:=abs(1-x);write(x); y:=(sin(pi/2-fi)/cos(pi/2-fi))*x; end;end;
 if fi>pi/2 then begin x:=1+sin(pi-fi)/cos(pi-fi); y:=(sin(fi-pi/2)/cos(fi-pi/2))*x; end;
 write(f1,y:3:3);

 close(f);
 close(f1);
 end.

Комментариев нет:

Отправить комментарий