zoukankan      html  css  js  c++  java
  • UVA 11881

    依然是来自2017/9/17的周赛水题……

    题目链接:https://cn.vjudge.net/problem/UVA-11881

    题解:

    观察这个函数:

    由于CF[i]固定值,因此NPV(IRR)这个函数,是连续单减函数,其值域区间为从+∞到CF[0];

    那么显然的,NPV(IRR) = 0方程的解必然有且仅有一个,所以题目中“Too many”和“No”的输出纯粹掩人耳目,实际上是不会有test case输出这两个的;

    那么要得到IRR的一定精确度的数值,显然二分法求即可。

    AC代码:

     1 #include<cstdio>
     2 #include<cmath>
     3 int t,cf[13];
     4 double l,r,mid;
     5 double ans;
     6 double calc(double IRR)
     7 {
     8     double ans=cf[0]*1.0;
     9     for(int i=1;i<=t;i++) ans+=(cf[i]*1.0)/pow(1+IRR,i);
    10     return ans;
    11 }
    12 int main()
    13 {
    14     while(scanf("%d",&t) && t>0)
    15     {
    16         for(int i=0;i<=t;i++) scanf("%d",&cf[i]);
    17         l=-1.0, r=1e8;
    18         while(r-l>1e-4)
    19         {
    20             mid=(l+r)/2;
    21             double tmp=calc(mid);
    22             if(tmp>=0) l=mid;
    23             else r=mid;
    24         }
    25         printf("%.2lf
    ",l);
    26     }
    27 }
  • 相关阅读:
    团队会议第八天
    团队会议第七天
    站立会议第五天
    站立会议第四天
    站立会议第三天
    站立会议第二天
    站立会议第一天(2016.4.19)
    团队报告
    团队计划backlog
    每日Scrum(5)
  • 原文地址:https://www.cnblogs.com/dilthey/p/7545738.html
Copyright © 2011-2022 走看看