📜  Uri beecrowd 问题没有 - 1131 解决方案 - C 编程语言(1)

📅  最后修改于: 2023-12-03 15:20:54.728000             🧑  作者: Mango

Uri beecrowd 问题没有 - 1131 解决方案 - C 编程语言

如果你是练习 Uri beecrowd 平台上的程序员,你可能会遇到一些挑战。其中一个挑战就是 Uri beecrowd 问题没有 - 1131。在这个问题中,要求我们写一个程序,读取N个数,然后按照固定的表格中将其分类,并输出分类的结果。本篇文章将为您提供 Uri beecrowd 问题没有 - 1131 的解题思路及C语言实现。

解题思路

对于输入的每个数,我们需要计算其整数部分的平方根,然后将其余数分类到固定的表格中。

具体来说,我们可以首先定义一个 $6×2$ 的二维数组,其中每一行表示一个区间,从下到上分别表示 $x<0$, $[0,1)$, $[1,4)$, $[4,9)$, $[9,16)$ 和 $x≥16$ 这六个区间。每行的第一列表示该区间内的计数器,第二列表示该区间内所有数字的平方根之和。

我们读入每个数后,可以调用 sqrt 函数计算其平方根。然后我们就可以在分类表格中找到一个区间,该区间包含我们接下来要讲的余数。

我们需要在该区间的计数器字段中增加 1,并将其平方根之和字段增加我们计算得到的平方根值。

当所有数字处理完毕时,我们需要按照格式输出分类表格。

代码实现
#include <stdio.h>
#include <math.h>

int main() {
    int i;
    double x, root;
    int counter[6][2] = {0};

    for (i = 0; i < 5; ++i) {
        counter[i + 1][0] = counter[i][0];
        counter[i + 1][1] = counter[i][1];
    }

    int N;
    scanf("%d", &N);

    while (N--) {
        scanf("%lf", &x);
        root = sqrt(fabs(x));
        if (x < 0) {
            ++counter[0][0];
            counter[0][1] += root;
        } else if (x < 1) {
            ++counter[1][0];
            counter[1][1] += root;
        } else if (x < 4) {
            ++counter[2][0];
            counter[2][1] += root;
        } else if (x < 9) {
            ++counter[3][0];
            counter[3][1] += root;
        } else if (x < 16) {
            ++counter[4][0];
            counter[4][1] += root;
        } else {
            ++counter[5][0];
            counter[5][1] += root;
        }
    }

    printf("Quantidade de números na primeira faixa: %d\n", counter[0][0]);
    printf("Quantidade de números na segunda faixa: %d\n", counter[1][0]);
    printf("Quantidade de números na terceira faixa: %d\n", counter[2][0]);
    printf("Quantidade de números na quarta faixa: %d\n", counter[3][0]);
    printf("Quantidade de números na quinta faixa: %d\n", counter[4][0]);
    printf("Quantidade de números na sexta faixa: %d\n", counter[5][0]);

    printf("Soma de todos os números na primeira faixa: %.2f\n", counter[0][1]);
    printf("Soma de todos os números na segunda faixa: %.2f\n", counter[1][1]);
    printf("Soma de todos os números na terceira faixa: %.2f\n", counter[2][1]);
    printf("Soma de todos os números na quarta faixa: %.2f\n", counter[3][1]);
    printf("Soma de todos os números na quinta faixa: %.2f\n", counter[4][1]);
    printf("Soma de todos os números na sexta faixa: %.2f\n", counter[5][1]);

    return 0;
}

上面是我们用C语言实现的程序。我们定义了一个 $6 × 2$ 的二维数组,存储分类表格中每个区间的计数器和平方根之和。

我们读入每个数字,计算其平方根。然后在分类表格中找到一个区间,该区间包含该数字余数。我们增加该区间中的计数器和平方根之和。

最后我们按照格式输出分类表格。

运行这个程序,并使用任意数字进行测试。它应该能够正确地输出分类表格。

总结

在本文中,我们提供了 Uri beecrowd 问题没有 - 1131 的解题思路及C语言实现。这个程序使用了 $6 × 2$ 的二维数组,存储了分类表格中每个区间的计数器和平方根之和。我们通过计算每个数字的平方根将其分类到固定的区间中,并相应地更新分类表格。最后,我们按照给定的格式输出分类表格。

我希望这篇文章能帮助你解决 Uri beecrowd 平台上的问题。如果你有任何问题或反馈,请在评论区留言。