信息学奥赛一本通 1398:短信计费 | OpenJudge NOI 1.12 02:短信计费

【题目链接】

ybt 1398:短信计费
OpenJudge NOI 1.12 02:短信计费

【题目考点】

1. 函数

2. <cmath>中的取整函数

  • 向上取整 : double ceil(double x);
  • 向下取整 : double floor(double x);
  • 四舍五入取整 : double round(double x);

【题解代码】

解法1:写函数求特定字数短信的费用

#include<bits/stdc++.h>
using namespace std;
double price(int num)//求字符数量为num的短信的费用 
{
	if(num % 70 == 0)//如果字符数量是70的整数倍 
		return num / 70 * 0.1;//有num/70条短信 
	else//如果字符数量不是70的整数倍 
		return (num / 70 + 1) * 0.1;//有num/70+1条短信 
}
int main()
{
    int n, num;
    cin >> n;
    double sum = 0;//总费用 
    for(int i = 0; i < n; ++i)
    {
        cin >> num;
        sum += price(num);
    }
    cout << fixed << setprecision(1) << sum;
    return 0;
}

解法2:使用向上取整ceil函数

短信条数即为 ⌈ 字 数 / 70 ⌉ \lceil 字数/70 \rceil ⌈字数/70⌉

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n, num;
    cin >> n;
    double sum = 0;//总费用 
    for(int i = 0; i < n; ++i)
    {
        cin >> num;
        sum += ceil((double)num/70)*0.1;//注意做类型转换,保证进行实数除法 
    }
    cout << fixed << setprecision(1) << sum;
    return 0;
}
上一篇:flink双流JOIN原理


下一篇:linux安装教程