zoukankan      html  css  js  c++  java
  • HFUT 1356.转啊转(安徽省2016“京胜杯”程序设计大赛 E)

    转啊转

    Time Limit: 1000 MS Memory Limit: 65536 KB
    Total Submissions: 25 Accepted: 8

    Description


        在二维平面上,有一个固定的圆和一个固定的点(保证该点不在圆上),还有一个动点在圆上以角速度w绕圆心一直转。在t时刻,连接该动点与定点成一条直线k,求直线k被圆所截线段的长度(即直线k在圆内部分长度)。

             动点初始时刻在圆的三点钟方向(即与x轴正方向平行),并以逆时针方向绕圆转。

      


    Input


           先输入一个整数T,表示TT<50)组数据。

    每组数据一行七个实数a,b,r(r>0),x,y,w(w>=0),t(t>=0) 分别表示圆的圆心坐标(a,b),半径r,固定点坐标(x,y),角速度w,要查询的时刻t

        上述所有数据的绝对值小于10000


    Output


             输出答案占一行,保留2位小数。


    Sample Input


    1
    1 1 1 3 1 3 0

    Sample Output


    2.00

    Hint


    角速度定义:

    一个以弧度为单位的圆(一个圆周为2π,即:360度=2π),在单位时间内所走的弧度即为角速度。

    纯粹的数学问题。

    使用两点式、点到直线距离公式、勾股定理求解即可

    要注意的是

    double输入用%lf 输出用%f

    不然会有奇妙的问题出现

    AC代码:GitHub

     1 /*
     2 By:OhYee
     3 Github:OhYee
     4 HomePage:http://www.oyohyee.com
     5 Email:oyohyee@oyohyee.com
     6 Blog:http://www.cnblogs.com/ohyee/
     7 
     8 かしこいかわいい?
     9 エリーチカ!
    10 要写出来Хорошо的代码哦~
    11 */
    12 
    13 #include <cstdio>
    14 #include <algorithm>
    15 #include <cstring>
    16 #include <cmath>
    17 #include <string>
    18 #include <iostream>
    19 #include <vector>
    20 #include <list>
    21 #include <queue>
    22 #include <stack>
    23 #include <map>
    24 using namespace std;
    25 
    26 //DEBUG MODE
    27 #define debug 0
    28 
    29 //循环
    30 #define REP(n) for(int o=0;o<n;o++)
    31 
    32 const double PI = 3.1415926;
    33 
    34 void Do() {
    35     double a,b,r,x,y,w,t;
    36     scanf("%lf%lf%lf%lf%lf%lf%lf",&a,&b,&r,&x,&y,&w,&t);
    37 
    38     double xb = a + r * cos(w*t);
    39     double yb = b + r * sin(w*t);
    40 
    41     double A = y - yb;
    42     double B = xb - x;
    43     double C = x * yb - xb * y;
    44 
    45     double l = abs(A * a + B * b + C) / sqrt(A * A + B * B);
    46 
    47     double ans = 2 * sqrt(r * r - l * l);
    48 
    49     printf("%.2f
    ",abs(ans));
    50 }
    51 
    52 int main() {
    53     int T;
    54     scanf("%d",&T);
    55     while(T--) 
    56         Do();
    57     return 0;
    58 }
  • 相关阅读:
    『空』
    退役前的做题记录 Ⅰ
    BZOJ3600 没有人的算术(替罪羊树,线段树)
    洛谷P5324 [BJOI2019]删数(线段树)
    洛谷P4696 [CEOI2011]Matching(KMP)
    Leetcode 638 大礼包 DP
    Leetcode 86 分割链表
    Leetcode 71 简化路径
    Leetcode 17.15 最长单词 剪枝与记忆化
    Leetcode 17.22单词转换 dfs+回溯+剪枝
  • 原文地址:https://www.cnblogs.com/ohyee/p/5540964.html
Copyright © 2011-2022 走看看