题目大意:
给予 s,d ,s 是盈利,d是亏损,一年12月中,每连续5个月都是亏损的,问盈利的最大数额是多少,没有盈利则输出Deficit。
解题思路:
(刚开始比较懵,想怎么都是亏损的,最后想明白了)
连续5个月亏损,先用0表示亏损,1表示盈利。
111101111011 如果 连续5个月中 4* s <= d 那么就是这种情况,一定把盈利放在前面,这样可以达到最大盈利(可以自己写下)
因此有5种情况:
- 4 * s <= d
- 3 s <= 2d
- 2 * s <= 3 *d
- s <= 4 *d (注意最后2位 是100001000010)
- 亏损
当然上面4种情况中也可能存在亏损,最后判断一下就ok
代码:
#include <iostream>
#include <cstdio>
using namespace std;
int main(){
int d , s;
while(cin>>s>>d){
int result ;
if (d >= 4 *s ) result = 10 * s - 2 * d;
else if(2 * d >= 3 * s) result = 8 * s - 4 * d;
else if(3 * d >= 2 * s) result = 6 * s - 6 * d;
else if(4 * d >= s) result = 3*s - 9 * d;
else result = -1;
if (result <= 0) printf("Deficit\n");
else printf("%d\n",result);
}
}