POJ 2586--Y2K Accounting Bug

2017-10-03
原题链接

题目大意:

某公司每个月要么赚s元,要么亏d元,但是它每5个月才报一次帐(一年共报帐8次),每次报账结果都是亏钱。给出若干组s,d,求这一年中该公司最多可能的盈利值,如果不可能盈利,输出”Deficit”。

样例输入:

59 237
375 743
200000 849694
2500000 8000000

样例输出:

116
28
300612
Deficit

思路:

每5个月中都必须有至少1个、最多4个月亏损才可能实现5个月总体亏损但全年盈利,且亏损月应该尽可能少。而且每5个月中的亏损月应该尽可能靠后,这样接下来的5个月里亏损月才能尽可能的少。

在参考题解中,作者直接对最少亏损月数为1,2,3,4,5的情况进行了讨论。

参考题解

代码:

#include <iostream>
#include <stdio.h>
using namespace std;

int main() {
    int s,d;
    while(scanf("%d%d",&s,&d) == 2) {
        int min_def;            //每5个月中最少亏损月数
        for(min_def = 1; min_def < 5; min_def++) {
            int tp = (5-min_def)*s - min_def*d;
            if(tp < 0) break;
        }
        int def = 0;            //总计最少亏损月数
        for(int a = 6-min_def; a <= 12; a += 5)
            def += 13-a > min_def?min_def:13-a;

        int result = (12-def)*s - def*d;
        if(result > 0)
            printf("%d\n",result);
        else
            printf("Deficit\n");

    }

    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值