本文主要是介绍1280短信套餐,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
某通信公司为推广手机短信,提出了短信套餐优惠政策。
用户必须选择一种短信套餐,且只能选择一种。每种套餐的形式为:每月交p元,可以发送免费短信f条。如果超过了f条,则超过的部分按每条a元收费。
现在你已经预知下个月需要发送m条短信。这家公司的短信套餐种类太多了,请你编个程序告诉他选择最省钱的短信套餐需要交多少钱?
用户必须选择一种短信套餐,且只能选择一种。每种套餐的形式为:每月交p元,可以发送免费短信f条。如果超过了f条,则超过的部分按每条a元收费。
现在你已经预知下个月需要发送m条短信。这家公司的短信套餐种类太多了,请你编个程序告诉他选择最省钱的短信套餐需要交多少钱?
输入
输入有多组数据。每组数据第一行为整数n和m,用一个空格隔开,分别是套餐的种类数和下月短信条数。1<= n<=1000,0<=m<=10000 下一行有一个实数a,表示超过的部分按每条a元收费。(0 <= p <= 100, 1 <= f <= 10000)
输入数据以0 0结尾。
输入数据以0 0结尾。
输出
对每组输入数据,输出采用最省钱的短信套餐需交的费用。保留小数点后两位数。
示例输入
5 222 0.1 10 120 15 200 20 300 30 500 50 1000 2 451 0.2 55.50 800 33.30 400 0 0
示例输出
17.20 43.50
#include <stdio.h>
int main()
{
int n, m, f, i;
double fee, p, t, min;
while (scanf("%d %d", &n, &m)==2 && (n||m)){
scanf("%lf", &fee);
n--;
scanf("%lf %d", &p, &f);
min = p;
if (m > f) min += (m-f)*fee;
while (n--){
scanf("%lf %d", &p, &f);
t = p;
if (m > f) t += (m-f)*fee;
if (t < min) min = t;
}
printf("%.2lf\n", min);
}
return 0;
}
这篇关于1280短信套餐的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!