zoukankan      html  css  js  c++  java
  • UVA 10169 Urnball Probabilities !

    UVA_10169

        这个题目明显可以预处理出结果然后再随用随查。计算的公式并不难推导,在计算0的个数的时候采用一个X=10^(log10(X))这样的转化,这样便只需计算出-log10(X)的整数部分即可。

        此外,需要注意的是涉及整数乘法的地方一定要避免溢出,如果中间结果会超过int的范围可以在计算之前根据需要强制转型成double或者long long。

    #include<stdio.h>
    #include<string.h>
    #include<math.h>
    #define MAXD 1000010
    double f[MAXD];
    int d[MAXD];
    void prepare()
    {
    int i, j, k;
    double p1 = 1, p2 = 0;
    for(i = 1; i < 1000000; i ++)
    {
    p1 = p1 * ((double)i * i + i - 1) / ((double)i * i + i);
    p2 += log10((double)i * i + i);
    f[i] = 1 - p1;
    d[i] = (int)(p2 - fmod(p2, 1) + 0.5);
    }
    }
    int main()
    {
    int n;
    prepare();
    while(scanf("%d", &n) == 1)
    {
    if(n == 0)
    printf("0.000000 0\n");
    else
    printf("%.6lf %d\n", f[n], d[n]);
    }
    return 0;
    }


  • 相关阅读:
    10.1~10.15学习情况
    ACM-ICPC 2018 沈阳赛区网络预赛
    打卡4
    打卡3
    tab 简单的tab
    css 圆形动画
    pdf和图片之间的转换
    对list进行分组
    C# 打开所在文件夹
    读取xml文件
  • 原文地址:https://www.cnblogs.com/staginner/p/2285900.html
Copyright © 2011-2022 走看看