李老师家的水费

题目背景

李老师家里要交水费了

题目描述

李老师这两个月用了x(x <= 200)方水,他所在的小区实行分段收费制度,在30方及以下的部分只收取5元/方的基础费用,30到80(包括80)方的部分要额外收取基础费用10%的水税(暂且认为有这种税),超过80的部分要额外收取基础费用30%的水税。李老师的计算器坏了,手机也没电了,他想让你设计一个程序,帮他算一算他应该交多少水费

输入输出格式

输入格式:

一行一个整数x,表示李老师的用水量

输出格式:

一个小数(保留2位小数),表示李老师需要交的水费

样例输入输出

样例输入#1:

1
15

样例输出#1:

1
75.00

样例输入#2:

1
85

样例输出#2:

1
457.50

解析

实质就是一个分段函数
最简单的思路就是把基础部分和额外部分(那个叫水税的东西)分开考虑
基础部分都是5 * x
再分情况讨论每个区间下的水税收取情况,两部分相加即可

标程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <cstdio>
/*
对于需要输出确定长度的,或输出n位小数的,我们一般用printf。这
也就是为什么让大家不要忘记printf和scanf的原因:在某些情况下,
他们要比cin和cout更为方便
*/

using namespace std;

int main() {
int x; //这里就不用初始化,当然初始化0也是没有问题的
cin >> x;
if(x <= 30) //第一档
printf("%.2lf", 5 * x);
else if(x <= 80) //第二档
printf("%.2lf", 5 * x + 5 * 0.1 * (x - 30));
else //都不是肯定是第三档
printf("%.2lf", 5 * x + 5 * 0.1 * 50 + 5 * 0.3 * (x - 80));
return 0;
}