洛谷 P1909 买铅笔 题解

题目:

P老师需要去商店买n支铅笔作为小朋友们参加NOIP的礼物。她发现商店一共有 3种包装的铅笔,不同包装内的铅笔数量有可能不同,价格也有可能不同。为了公平起 见,P老师决定只买同一种包装的铅笔。
商店不允许将铅笔的包装拆开,因此P老师可能需要购买超过n支铅笔才够给小朋 友们发礼物。
现在P老师想知道,在商店每种包装的数量都足够的情况下,要买够至少n支铅笔最少需要花费多少钱。

输入格式
第一行包含一个正整数n,表示需要的铅笔数量。
接下来三行,每行用2个正整数描述一种包装的铅笔:其中第1个整数表示这种 包装内铅笔的数量,第2个整数表示这种包装的价格。
保证所有的7个数都是不超过10000的正整数。

输出格式
1个整数,表示P老师最少需要花费的钱。

输入输出样例
输入1

57
2 2
50 30
30 27

输出1

54

输入2

9998
128 233
128 2333
128 666

输出2

18407

这道题的关键在于怎样根据需要笔的数目来求出每种笔需要的钱,为了准确简单,因此这里用到了冒号运算符的作用

#include 

int main() {
	int num;//需要铅笔的数量
	int pen1, $pen1;//penl1:第一种包装数量,$pen1:这种包装价格
	int pen2, $pen2;
	int pen3, $pen3;
	int m1, m2, m3=0;//花费钱
	int min;//最少花费的钱

	scanf("%d", &num);
	scanf("%d %d", &pen1, &$pen1);
	scanf("%d %d", &pen2, &$pen2);
	scanf("%d %d", &pen3, &$pen3);

	int a = num / pen1;  num%pen1 == 0 ? m1=a * $pen1 : m1=(a + 1)*$pen1;  
	int b = num / pen2;  num%pen2 == 0 ? m2=b * $pen2 : m2=(b + 1)*$pen2;
	int c = num / pen3;  num%pen3 == 0 ? m3=c * $pen3 : m3=(c + 1)*$pen3;

	if (m1 < m2) {
		min = m1;
	}
	else {
		min = m2;
	}
	if (min < m3) {
		min = min;
	}
	else {
		min = m3;
	}
	printf("%d\n", min);

	/*调试用
	printf("m1=%d\n", m1);
	printf("m2=%d\n", m2);
	printf("m3=%d\n", m3);
    */
	return 0;
}

acm小白,有问题的话欢迎大家指出,谢谢

你可能感兴趣的:(学习)