B2157 短信计费

· · 题解

欢迎报名洛谷网校,期待和大家一起进步!

本题考察循环结构、自定义函数。

在本题中,我们可以把“算一条短信要发几条”做成一个函数。我们编写一个函数 seg(x) 表示,输入这次短信的字数 x,返回它需要多少条短信。

根据题意,每 70 个字算一条短信,超过 70 字就要分割成多条。例如:79 个字要发 2 条,而 140 个字也是发 2 条。我们可以编写这样的一个函数:

int seg(int x) {
    return (x + 69) / 70;
}

在函数中,如果 x 恰好是 70 的倍数,那么 (x + 69)\div 70,返回的值和 x \div 70 恰好相同。否则会返回 x\div 70 + 1

在主函数中,我们只需要使用循环读入短信字数,求出一共要发多少条短信,最后计算总资费即可。参考代码:

int sum = 0; // 总条数
for (int i = 0; i < n; ++i) {
    int x;
    cin >> x;
    sum += seg(x);
}
// 总资费:每条 0.1 元
double cost = sum * 0.1;