首页 > ACM题库 > HDU-杭电 > hdu 2008 数值统计[解题报告]C++
2013
12-26

hdu 2008 数值统计[解题报告]C++

数值统计

问题描述 :

统计给定的n个数中,负数、零和正数的个数。

输入:

输入数据有多组,每组占一行,每行的第一个数是整数n(n<100),表示需要统计的数值的个数,然后是n个实数;如果n=0,则表示输入结束,该行不做处理。

输出:

输入数据有多组,每组占一行,每行的第一个数是整数n(n<100),表示需要统计的数值的个数,然后是n个实数;如果n=0,则表示输入结束,该行不做处理。

样例输入:

6 0 1 2 3 -1 0
5 1 2 3 4 0.5
0 

样例输出:

1 2 3
0 0 5

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2008

#include <stdio.h>

int main(void)
{
    int n, i, a, b, c;
    double x;

    while (scanf("%d", &n) , n)
    {
        a = b = c = 0;
        for (i = 0 ; i < n ; i++)
        {
            scanf("%lf", &x);
            if (x > 0) c++;
            else if (x < 0) a++;
            else b++;
        }
        printf("%d %d %d\n", a, b, c);
    }

    return 0;
}

解题转自:http://blog.csdn.net/basementman/article/details/16904781


  1. 有两个重复的话结果是正确的,但解法不够严谨,后面重复的覆盖掉前面的,由于题目数据限制也比较严,所以能提交通过。已更新算法

  2. 第一句可以忽略不计了吧。从第二句开始分析,说明这个花色下的所有牌都会在其它里面出现,那么还剩下♠️和♦️。第三句,可以排除2和7,因为在两种花色里有。现在是第四句,因为♠️还剩下多个,只有是♦️B才能知道答案。