牛牛与世界杯门票C语言

今年的世界杯要开始啦,牛牛作为一个球迷,当然不会放过去开幕式现场的机会。但是牛牛一个人去又觉得太过寂寞,便想叫上了他的n个小伙伴陪他一起去莫斯科(一共n+1)。当牛牛开始订开幕式的门票时,发现门票有m种套餐,每种套餐需要花费x元,包含y张门票,每张门票也可以单独购买,此时这张门票的价格为k元。请问牛牛要怎样选择购买门票,使得他花费的钱最少。(每种套餐可以购买次数没有限制)

输入描述:

第一行输入三个数字n(0≤n≤999)m(1≤m≤1000)k(1≤k≤100000)
接下来m行,每行输入两个数字xi(1≤xi≤100000)yi(2≤yi≤1000), 表示套餐的价格和套餐内包含的门票数量。

输出描述:

输出牛牛至少要花费的钱的数量。

题目来源:牛客网

题目分析:将所有情况分为全部单买和全部买套餐一直将套餐数递减进行比较来获取最小的花费。需要注意的是情况需要考虑完整。

代码:

#include <stdio.h>

int main()

{

int i,j,n,m,k,x[1000],y[1000],min=0,sum=0;

scanf("%d%d%d",&n,&m,&k);

for(i=0;i<m;i++)

{

scanf("%d%d",&x[i],&y[i]);

}

    min=k*(n+1);

for(i=0;i<m;i++)

{

sum=((n+1)/y[i])*x[i];

if((n+1)%y[i]!=0) sum=sum+x[i];

if(sum<min)min=sum;

for(j=1;j*y[i]<=n+1;j++)

{ sum=x[i]*j+(n+1-j*y[i])*k;

     if(sum<min)min=sum;

}

}printf("%d\n",min);

     return 0;

}


猜你喜欢

转载自blog.csdn.net/lhkjg/article/details/80961146