zoukankan      html  css  js  c++  java
  • hdoj 2552 三足鼎立 【math】

    三足鼎立

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 2412    Accepted Submission(s): 1340


    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
     
    分析:这道题假设知道了atan就是arctan就好做了,可是还是会wa的。由于定义的double型是浮点型的所以直接取整有可能取错。比如输入是s = 2, 可能s实际上是2.0000001。又或者是1.999999999。这种直接取整就错了,改ac的,一种是在算出结果之后加0.1再取整,一种是用.lf,四舍五入一下。


    代码:

    #include <stdio.h>
    #include <string.h>
    #include <math.h>
    int main(){
        double s, u, v;
        int t;
        scanf("%d", &t);
        while( t --){
            scanf("%lf%lf", &s, &u);
            v = 1.0/(tan(atan(1.0/s)-atan(1.0/u)));  
            printf("%.lf
    ", (u*v-s*(u+v)));  //能够改成printf("%d
    ", (int)(u*v-s*(u+v)+0.1));
        }
        return 0;
    }
    



  • 相关阅读:
    Android实现通过浏览器点击链接打开本地应用(APP)并拿到浏览器传递的数据(转)
    保存图片文件到本地
    android ScrollView中嵌套GridView,ListView只显示一行的解决办法
    蒙版提示页(添加新功能后的一种提示)
    C和指针 第三章--数据
    *(ptr++) += 123
    优先级队列-堆
    单链表相关(一)
    字符间的距离-动态规划
    和最大的连续子数组
  • 原文地址:https://www.cnblogs.com/wgwyanfs/p/6941067.html
Copyright © 2011-2022 走看看