zoukankan      html  css  js  c++  java
  • 【数学三角恒等变幻】【HDU2552】三足鼎立

    Problem Description

    MCA山中人才辈出,洞悉外界战火纷纷,山中各路豪杰决定出山拯救百姓于水火,曾以题数扫全场的威士忌,曾经高数九十九的天外来客,曾以一剑铸十年的亦纷菲,歃血为盟,盘踞全国各个要塞(简称全国赛)遇敌杀敌,遇佛杀佛,终于击退辽军,暂时平定外患,三人位置也处于稳态。

    可惜辽誓不甘心,辽国征南大将军<耶律javac++>欲找出三人所在逐个击破,现在他发现威士忌的位置s,天外来客的位置u,不过很难探查到亦纷菲v所在何处,只能知道三人满足关系:

    arctan(1/s) = arctan(1/u)+arctan(1/v)

    注:(其中0 <= x <= 1)
    定义 f(s, u, v) = v*u-s*u-s*v 的值 为<三足鼎立>

    <耶律javac++>想计算<三足鼎立>的值

     

     

    Input

    首先输入一个t,表示有t组数据,跟着t行:
    输入s, u (s <= 12^3, u <= 2^20 且 s, u, v > 0)
    且s,u,v均为实数

     

     

    Output

    输出 v*u-s*u-s*v 的值,为了简单起见,如果是小数,直接取整

    比如:答案是1.7 则输出 1

     

     

    Sample Input

    1

    1 2

     

     

    Sample Output

    1

     

     

    Author

    英雄哪里出来

     

     

    直接计算精度丢失太多

    由三角函数知等式恒等于1

    *1.tan(a+b) = ( tan(a) + tan(b)) / (1 – tan(a) * tan(b) )
    2.tan( atan(x) ) = x
    arctan(1/s) =arctan(1/u)+arctan(1/v)
    所以得1/s = tan( arctan(1/u)+arctan(1/v)) = (tan(arctan(1/u)) + tan(arctan(1/v)))/(1-tan(arctan(1/u))*tan(arctan(1/v)))= (1/u + 1/v) / (1 - 1/(uv))
    所以解得 uv = 1 + us + vs
    所以v*u-s*u-s*v恒等于1*/
    #include<iostream>
    using namespace std;
    int main()
    {
            intt;
            doubles,u,v;
            cin>>t;
            while(t--)
            {
                   cin>>s>>u;
                   cout<<1<<endl;
            }
            return0;
    }


     

  • 相关阅读:
    bzoj1415 NOI2005聪聪和可可
    Tyvj1952 Easy
    poj2096 Collecting Bugs
    COGS 1489玩纸牌
    COGS1487 麻球繁衍
    cf 261B.Maxim and Restaurant
    cf 223B.Two Strings
    cf 609E.Minimum spanning tree for each edge
    cf 187B.AlgoRace
    cf 760B.Frodo and pillows
  • 原文地址:https://www.cnblogs.com/zy691357966/p/5480454.html
Copyright © 2011-2022 走看看