这道题难在理解题意,只要理解题意,这道题基本上就没什么难点了
题意:
有一家名为MS的公司,他们连续5个月发布一次公司的盈余状况(所以一年应该发布8次),并且在这一年的每一
个月的盈利和亏损是一个特定的值s和d。(意思是每个月盈利状况是特定的,要么盈利s元,要么亏损d元)。并
且知道没连续5个月发布的盈余状况一定是亏损的。
给你s,d。根据s,d和题目的信息,推出这一年的总盈余状况。并且如果能盈利,那么是这个值最大。如果不能
盈利,输出"Deficit";
设盈利的月份有x月,那么亏损的月份有12-x月,设总盈余为S, S = x * s + (12 - x) * d;
所以我们应该在满足每连续5个月亏损的情况下使得x最大。
我的思路就是把12个月分成3份。1~5月,6~10月,11~12个月;在每份都使x最大(贪心)并且满足题中条件;
代码如下:
#include<stdio.h>
/*
59 237
375 743
200000 849694
2500000 8000000
Sample Output
116
28
300612
Deficit
*/
int main()
{
int s , d;
while(~scanf("%d %d",&s,&d))
{
int x1 = (5*d) / (s+d);
int y1 = 5 - x1;
if(1 <= x1 && x1 <= 5)
{
int S;
if(x1 == 1)
{
S =s * (x1 * 2 + 1) - d * (12 - x1 * 2 - 1);
}
else
{
S = s * (x1 * 2 + 2) - d * (12 - x1 * 2 - 2);
}
if(S > 0)
printf("%d\n", S);
else
printf("Deficit\n");
}
else
printf("Deficit\n");
}
return 0;
}