zoj 3827 Information Entropy(水题)

来源:互联网 发布:go web编程 中文pdf 编辑:程序博客网 时间:2024/06/04 19:30

题目链接:zoj 3827 Information Entropy

题目大意:三种底,计算和。

解题思路:调用库函数就可以直接算了,不过要注意Pi = 0的时候,不过它题目里居然也讲了。。。limp0+plogb(p)=0,因为p是logp的高阶。

#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>using namespace std;int N;double f(double x, int k) {    if (x == 0)        return 0;    if (k == 1)        return x * log2(x);    else if (k == 2)        return x * log(x);    else        return x * log10(x);}int main () {    int cas, k;    scanf("%d", &cas);    while (cas--) {        char op[10];        scanf("%d%s", &N, op);        if (op[0] == 'b')            k = 1;        else if (op[0] == 'n')            k = 2;        else if (op[0] == 'd')            k = 3;        int x;        double ans = 0;        for (int i = 1; i <= N; i++) {            scanf("%d", &x);            ans += f(x / 100.0, k);        }        printf("%.8lf\n", -ans);    }    return 0;}
0 0
原创粉丝点击