洛谷P1909

113 阅读1分钟

记录学习的点点滴滴

让我们先来看一下这道题


image.png

image.png

image.png

这个题乍一看可能很唬人,但实际上就是一个很简单的小学数学问题。
但是关键在于这个余数的写法。
一开始想的是通过if语句if(n%包装中笔的数量>0)分类讨论,但是这样就不好写,而且牵扯到一个四舍五入的问题。
在std::数据库中,有向上取整函数ceil,于是在这里采用了此方法。
此外排序部分直接使用sort().
具体上代码

#include<algorithm>
#include<cmath>
using namespace std;
int main() {
	int n, a[3], b[3],x[3];
	cin >> n;
	for (int i=0; i < 3; i++)
	{
		cin >> a[i] >> b[i];
		x[i] = ceil((n*1.0) / a[i])*b[i];
	}//ceil直接向上取整,不用考虑四舍五入
	sort(x, x + 3);//要排序的第一位地址与最后一位地址+1,默认由小到大输出
	cout << x[0];
}