【洛谷 · for C++】P1422 小玉家的电费

本文介绍了一种使用C++解决分段计费问题的方法。通过表驱动的方式实现了不同区间费用的累加计算,避免了仅计算最大符合区间的错误做法。适合初学者参考。

题目链接

题目本身非常简单,直接if-else其实就能做,我的代码用了一个表驱动。
需要注意的是(总是会忘记的一个点,也导致这次没能一次AC的一个点):
这是一种分段计算的题目,每一个符合的段都应该分开计算然后最后加起来,而不是只要计算最大符合的一段!

贴一下自己的代码(刚开始学C++,代码可能写得比较xxx):

#include <iostream>
#include <iomanip>

using namespace std;

int main() {
	int amount[3] = { 400, 150, 0 };
	double price[3] = { 0.5663, 0.4663, 0.4463 };

	int sum;
	cin >> sum;

	double res = 0.0;

	for (int i = 0; i < 3; i++) {
		if (sum > amount[i]) {
			res += (sum - amount[i]) * price[i];
			sum = amount[i];
		}
	}

	cout << fixed << setprecision(1);
	cout << res;

	return 0;

}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值