短信套餐
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
某通信公司为推广手机短信,提出了短信套餐优惠政策。
用户必须选择一种短信套餐,且只能选择一种。每种套餐的形式为:每月交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 i,j,n,m,k;
double a,b,c,d;
while(scanf("%d %d",&n,&m)&&(n||m))
{
scanf("%lf",&a);
for(i=0;i<n;i++)
{
scanf("%lf %d",&b,&k);
if(m>k)
c=b+(m-k)*a;
else
c=b;
if(i==0)
d=c;
else
if(c<d)
d=c;
}
printf("%.2lf\n",d);
}
}