短信计费

GitHub跳转原题关系图返回列表

每条短信用向上取整计算计费条数,再累加并换算为元。

OJ: noi_openjudge

题目 ID: ch0112-02

难度:入门

标签:模拟数学python

日期: 2026-07-30 23:01

题意

每 70 个字或不足 70 个字计一条短信,统计总资费。

思路

长度为 length 的短信需计费 (length + 69) // 70 条,这是正整数除法的向上取整公式。累计条数后乘以 0.1 元并固定输出一位小数。

代码

Python代码

python
message_count = int(input())
billable_messages = sum((int(input()) + 69) // 70 for _ in range(message_count))

print(f"{billable_messages / 10:.1f}")

C++代码

cpp
#include <cstdio>
int n;
double sum = 0;

void init(){
    scanf("%d",&n);
}

double calc(int len){
    int a = len / 70;
    if( len % 70 != 0 )
        a++;
    return a*0.1;
}
int main(){
    init();
    int i,t;
    for (i=1;i<=n;i++){
        scanf("%d",&t);
        sum += calc(t);
    }
    printf("%0.1lf\n",sum);
    return 0;
}

复杂度

时间复杂度为 O(n)O(n),空间复杂度为 O(1)O(1)

总结

正整数向上取整除法可记作 (a + b - 1) // b