poj2586 Y2K Accounting Bug 贪心

4 篇文章 0 订阅
///2014.3.3
///poj2586

/**
 *题目大意是一个公司在12个月中,或固定盈余s,或固定亏损d.
 *但记不得哪些月盈余,哪些月亏损,
 *只能记得连续5个月的代数和总是亏损(<0为亏损),
 *问全年是否可能盈利,若可能,输出可能最大盈利金额,
 *否则输出“Deficit”.
 *思路:
 *题意说连续的五个月的代数总和一定是亏损,则可以根据 s 和 d
 *求出连续的五个月至少有 dInFive 个月是亏损的
 *例如连续的五个月至少有 2 个月亏损(dInFive=2)
 *则,1-5月中4月和5月设为亏损,接着检查下一个连续的五个月(2-6月)
 *从尾部开始将其设成一共有2个月亏损
 *最后可以求出12个月中一共至少要有几个月亏损
 */

#include <cstdio>

int s,d;
int dInFive;   ///表示在连续五个月中最少有几个月份亏损
int month[6] = {0,2,4,6,9,12}; 
///month[i]表示 i 为 dInFive时,12个月中的最少亏损月份数,笔算即可求出
int S;

void init( )
{
    for(dInFive=0 ; dInFive*d<(5-dInFive)*s ; dInFive++); ///求出dInFive
    S = s*(12-month[dInFive]) - d*month[dInFive];
}

int main( )
{
//    freopen("in","r",stdin);
//    freopen("out","w",stdout);

    while( scanf("%d%d",&s,&d)!=EOF ){
        init();
        if( S>0 )
            printf("%d\n",S);
        else
            printf("Deficit\n");
    }
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值