C语言实现美团下单优惠系统(2018CodeM Q1)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/li99yangg/article/details/80602002

题目描述

美团在吃喝玩乐等很多方面都给大家提供了便利。最近又增加了一项新业务:小象生鲜。这是新零售超市,你既可以在线下超市门店选购生鲜食品,也可以在手机App上下单,最快30分钟就配送到家。
新店开张免不了大优惠。我们要在小象生鲜超市里采购n个物品,每个物品价格为ai,有一些物品可以选择八折优惠(称为特价优惠)。
有m种满减优惠方式,满减优惠方式只有在所有物品都不选择特价优惠时才能使用,且最多只可以选择最多一款。
每种满减优惠描述为(b i,c i),即满b i减c i(当消费>=b i时优惠c i)。
求要买齐这n个物品(必须一单买齐),至少需要多少钱(保留两位小数)。

输入描述:

第一行,两个整数n,m。
接下来n行,每行一个正整数ai,以及一个0/1表示是否可以选择特价优惠(1表示可以)。
接下来m行,每行两个正整数b i,c i,描述一款满减优惠。
1 <= n,m <=10
1 <= a <= 100 1 <= c < b <= 1000

输出描述:

一行一个实数,表示至少需要消耗的钱数(保留恰好两位小数)。
示例1

输入

2 1
6 1
10 1
12 2

输出

12.80
示例2

输入

2 2
6 1
10 1
5 1
16 6

输出

10.00

#include <stdio.h>

typedef struct
{
    float money;
    int flag;
}good;
typedef struct
{
    float price;
    float count;
}discount;
int main()
{
    int n,m;
    while(~scanf("%d",&n))
    {
        int good_num = n;
        scanf("%d",&m);
        discount d[10];
        int discount_num = m;
        good g[10];
        for(int i = 0;i<good_num;i++)
        {
            scanf("%f",&(g[i].money));
            scanf("%d",&(g[i].flag));
        }
        for(int i = 0;i<discount_num;i++)
        {
            scanf("%f",&(d[i].price));
            scanf("%f",&(d[i].count));
        }
        float sum = 0;//不使用优惠的总价格
        float sum_good1 = 0;//八折后物品的价格
        float sum_good2 = 0;//使用满减后的价格
        for(int i = 0;i<good_num;i++)
        {
            sum+=g[i].money;
            //printf("%f\n",sum);
            if(g[i].flag==1)sum_good1+=g[i].money*0.8;
            else sum_good1+=g[i].money;
        }
        int real_count = 0;
        for(int i = 0;i<discount_num;i++)
        {
            if(sum>=d[i].price)
            {
                if(d[i].count>real_count)real_count = d[i].count;
            }
        }
        sum_good2 = sum - real_count;
        float real_sum = sum;
        if(real_sum>=sum_good1) real_sum=sum_good1;
        if(real_sum>=sum_good2) real_sum=sum_good2;
        printf("%.2f\n",real_sum);
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/li99yangg/article/details/80602002
Q1