题目大意:
这是一道题目很长,而且不太好理解的题(也许是我英语渣)。
总而言之,就是一个公司,我们叫它 A公司。
A公司的员工发现,A公司的记账方式有 ”bug“ ,因为即使每次记账都是亏损,但是年底一算,却盈利了。
接下来是这个记账方式:
A公司 每连续的五个月记一次账,一年记八次账。分别是
1 - 5月,2 - 6月。。。8 - 12 月
在这一年中,每个月亏损和盈利是你输入的定整数值 s 和 d,s 代表赚钱,d 代表亏钱。
也就是说 我要亏就一个月亏 d 元,要赚就一个月赚 s 元。
要求输入 s 和 d ,输出在每次记账都亏的情况下,一年最多赚多少。
如果怎么算都是赔钱,则输出 Deficit 。
样例: 59 237 --> 116
375 743 --> 28
200000 849694 --> 300612
2500000 8000000 --> Deficit
解题思路:
让我们小小的贪一下,如果想让一年到头赚的最多,就得先赚一波,但是因为五个月一轮回,所以不能赚的太多。
因为五个月的剩下几个月要亏成狗,但要正好亏到负值,而不是一直亏。
所以问题就变成:怎么赚了再亏能亏回来。
然后就变成了判断 s 和 d 的大小关系的一道题。
AC代码:
1 import java.util.*; 2 3 public class Main{ 4 public static void main(String[] args){ 5 Scanner sc = new Scanner(System.in); 6 while(sc.hasNext()){ 7 long a = sc.nextLong(); 8 long b = sc.nextLong(); 9 int flag = 0;10 if(4 * a < b && flag == 0){11 long t = 0;t = 10 * a - 2 * b;12 if(t > 0){System.out.println(t);}13 else{System.out.println("Deficit");}14 flag = 1;15 }16 if(3 * a < 2 * b && flag == 0){17 long t = 0;t = 8 * a - 4 * b;18 if(t > 0){System.out.println(t);}19 else{System.out.println("Deficit");}20 flag = 1;21 }22 if(2 * a < 3 * b && flag == 0){23 long t = 0;t = 6 * a - 6 * b;24 if(t > 0){System.out.println(t);}25 else{System.out.println("Deficit");}26 flag = 1;27 }28 if(a < 4 * b && flag == 0){29 long t = 0;t = 3 * a - 9 * b;30 if(t > 0){System.out.println(t);}31 else{System.out.println("Deficit");}32 flag = 1;33 }34 if(flag == 0){System.out.println("Deficit");}35 }36 }37 }