- class Test1
- {
- /*
- 比较笨的方法,假设买x瓶可乐能满足sum人喝,则当sum=28时,打印出x即可。
- free:每一次兑奖的瓶数。last:每一次剩下的不能兑奖瓶数。
- 把买的可乐和每一次兑奖的可乐加起来就是可乐总数。
- */
- public static void main(String[] args)
- {
- show(28);
- //show(50);
- }
- public static void show(int tol)
- {
- int free=0,last=0, sum=0;
- int x=1,m=0;
- while(sum<tol)
- { for (sum=x,m=x,free=m;m>=3 ; )//只要每一次兑奖的瓶数和剩下的大于等于3,就能兑奖,否则退出循环。
- {
-
- free=m/3;
- last=m%3;
- m=last+free;
- sum+=free;
-
- }
- System.out.println("买x瓶可乐可满足几人喝:"+x+" "+sum);
- x++;//递增
- }
-
- System.out.println(sum+"人至少需要买:"+(x-1));//结束的时候x多加了1
-
- }
- }
复制代码
抛砖引玉,有更多好方法大家交流以下!:D |