A公司的计算机管理系统受到千年虫病毒的攻击,因此A公司丢失了向MS公司做年终回报的数据。
A公司目前掌握的数据是MS公司每次公布的公司亏盈报表,而MS公司公布亏盈的方式与众不同,它么次都是将连续5个月的亏盈总和做一次性公布,因此A公司不知道每个月具体的亏盈状况。已知的情况是所有的盈利月的盈利固定为 s ,而亏损月的亏损固定为 d 。
写一个程序,确定MS公司是否盈利,若盈利的话,计算可能的盈利最大值。
输入:
输入为两个整数 s 和 d 。
输出:
对于每一组的输入数据,若盈利的话,那么输出可能盈利最大值;若亏损的话,输出 Deficit。
样例输入:
59 237
375 743
200000 849694
2500000 8000000
样例输出:
116
28
300612
Deficit
解题思路:
贪心。由于他说的是连续五个月,注意连续这两个字哦。用贪心的思想来解决如何安排亏损月份的问题。假设5个月至少亏损3个月,那么对前五个月来说,亏损的月必定是3,4,5月,这样才能保证这3个亏损月能最大可能地被后面连续的5个月利用,减少出现更多的亏损月。
1.先计算出连续5个月至少有哪几个月是亏损的
2.亏损月份至少是4,5个月时特殊考虑
AC代码:
A公司的烦恼
#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
int s,d;
while(~scanf("%d %d",&s,&d))
{
int i,ans;
for(i=1;i<=5;i++)
{
if(s*(5-i)-d*i<0)
break;
}
if(i==4)
ans=3*s-9*d;
else
ans=s*(12-2*i)-d*2*i;
if(i==5||ans<0)
printf("Deficit\n");
else
printf("%d\n",ans);
}
return 0;
}