洛谷 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 <stdio.h>
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小白,有问题的话欢迎大家指出,谢谢