结果成负数了30分钟的话还可以
思路应该没问题 不知道是哪里有问题 你参考下。
public static void main(String[] args){
int x=10;
int y=89;
for(int i=0;i<=120;i++){
if(i>0){
if(i%4==0){
y=y*2;
}
if(i%6==0){
x=x*2;
}
if(i%2==1)
y=y-x;
}
}
System.out.println("X="+x+" Y="+y);
}
这个数目非常大
import java.math.BigDecimal;
public class Cell { private static BigDecimal x = new BigDecimal(10);
private static BigDecimal y =new BigDecimal(89);
public static void main(String[] args) {
for(int i=1;i<=60;i++){
System.out.println(i+"分钟的时候剩余y====="+get(i));
}
}
//min分钟的时候 有 y多少 只
public static BigDecimal get(int min){
if(min ==0){
return y;
}else if(min%2==0&&min%3!=0){
//1.5分钟后
y=get(min-1).subtract(x) ;
//2分钟后
return y= y.multiply(new BigDecimal(2)) ;
}else if(min%3==0&&min%2!=0){
//2.5分钟的时候吃掉y
y=get(min-1).subtract(x) ;
//3分钟后
x= x.multiply(new BigDecimal(2)) ;
return y ;
}else if(min%6==0){
//5.5分钟的时候
y=get(min-1).subtract(x) ;
//6分钟的时候
x= x.multiply(new BigDecimal(2)) ;
return y= y.multiply(new BigDecimal(2)) ;
}else{
return y=get(min-1).subtract(x) ;
}
}
}
结果如下图所示:
1分钟的时候剩余y=====79
2分钟的时候剩余y=====118
3分钟的时候剩余y=====186
4分钟的时候剩余y=====464
5分钟的时候剩余y=====1216
6分钟的时候剩余y=====6848
7分钟的时候剩余y=====41984
8分钟的时候剩余y=====559104
9分钟的时候剩余y=====8474624
10分钟的时候剩余y=====262995968
11分钟的时候剩余y=====8347713536
12分钟的时候剩余y=====533121204224
13分钟的时候剩余y=====34100966588416
14分钟的时候剩余y=====4364300953059328
15分钟的时候剩余y=====558620385868775424
16分钟的时候剩余y=====143006148080313565184
17分钟的时候剩余y=====36609552094249577611264
18分钟的时候剩余y=====18744089253621901115260928
19分钟的时候剩余y=====9596973605620693002465837056
20分钟的时候剩余y=====9827300960165205986613808594944
21分钟的时候剩余y=====10063156182435883418722635597479936
22分钟的时候剩余y=====20609343861427705324033025603344007168
23分钟的时候剩余y=====42207936228178021134047098786142826266624
24分钟的时候剩余y=====172883706790610489688844775574556561117282304
25分钟的时候剩余y=====708131663014338841760691890361397638820029005824
26分钟的时候剩余y=====5801014583413462902522750941751338071366181236768768
27分钟的时候剩余y=====47521911467323087869005313939294545825289918205925523456
28分钟的时候剩余y=====778598997480621471410137524488651952853163104239384289869824
29分钟的时候剩余y=====12756565974722502187462607123776926852707417079549551804862693376
30分钟的时候剩余y=====418007153859706951678650272073714538232386873554718335684537365823488
31分钟的时候剩余y=====13697258417674877392605884233918211534793510250218147748946700509206544384
32分钟的时候剩余y=====897663527660740764801818966317609453554646678007616215178632709648451563945984
33分钟的时候剩余y=====58829276948774306762052007506967418927065003672485456188689351266599007385586499584
34分钟的时候剩余y=====7710870988229745935915680726844932758454053338995257143528787047622592962880412579790848
35分钟的时候剩余y=====1010679282169249259312340104226745209183463208008894467955942430823419587594458785796394582016
36分钟的时候剩余y=====264943509744975677833174084282406566105349767962024612732577472408411252258003661545984874694836224
37分钟的时候剩余y=====69453351418586904089899587150127148581996542218728471653007365359155002747177031844697735824876593217536
38分钟的时候剩余y=====36413558708548090771485274747765862161590309420866249341981838718570459484737471258596890529154796637491560448
39分钟的时候剩余y=====19091191868187261414400471726956668339687899309306273094115933711940311181036436669760795346037183962982907132248064
40分钟的时候剩余y=====20018565604376325824866389041565315460935439702343970171299182188908337672508769649030536399395242834632280208157079240704
41分钟的时候剩余y=====20990987447174510228135098755648392224765666298834802602074665167174749672461103641266672052459354465428946458681821869704740864
42分钟的时候剩余y=====44021291306816918473953978625605537050951763767731707864615428286661312466020047249382782021317034963631617979310974671066795541004288
43分钟的时候剩余y=====92319339106673714211489534182645903237477593242418703473160933008406307409932301804280003234492441093495081427319725014791928564932092624896
44分钟的时候剩余y=====387215373292477986212107399180408442532565219245521171929711892683176671386231107454886274262633104009717442360335055917180074253998753581507805184
45分钟的时候剩余y=====1624098989062133587481386912811983852148108429342341378552425920927024958488943046569719199129028196931914650159426340362046225312643462798489714232918016
46分钟的时候剩余y=====13623929772438526309015062107909910238000439555248597983420806479310191444351167762097445517028758914112191961428562350979860464872548170506443741757532660563968
47分钟的时候剩余y=====114285806280516001304014222118909936301772391256674830978632077749961572183831075808125336835713425585035988551150074678979590298384458870438463000710578489115598127104
48分钟的时候剩余y=====1917397657702373545333728271560929685881076590949745081088469424650027205032718619586315612662291826951570530504650705470889061204626060545540399835970119367328413308644491264
49分钟的时候剩余y=====32168594661166784682749751297284374500838972278907518370358535051213289905096072582770708657680126090312825958527306890476447752533631981556965778456812949809695225450666991355428864
50分钟的时候剩余y=====1079398922093683917295968102921640328850935238282487359446946249626641647392811985094654864220437498931916441974160125262857758807740532642035235130363867460588645484768794486507245150404608
51分钟的时候剩余y=====36218617732265814632401185583653181742886344589353518893422115538761482351359283248930670646182423440459433450442670873539612532192326884092381367243823901580752922178670204324537054194997401747456
52分钟的时候剩余y=====2430590291662614966015021156772141996750642666504061147340095246282508972928334900803114140332063818099263015484201751773644491903460268144434183008385692385486637386015520987895068154813888463647333679104
53分钟的时候剩余y=====163114153322906761638666676766944356248627320619018394984530413629819331798776084311063790986224395266105673545639032011231991741999570413081296598594084515477738117153202396918993176940708071947904914012153839616
54分钟的时候剩余y=====21892811063644195902979398304969656998113362092212202565030267264294583746563727238338366949082960556017194111033121612021575509024365946173437325217298409240793134677051184433566393972297504757901781732438122585200263168
55分钟的时候剩余y=====2938403360495587374484803271300078471226075746458048322154134723446394553164805778142639403198062689153054848736533892572046446166811662594330859408731179113668758696633336488477848727681298426599017384995038461456905989001314304
56分钟的时候剩余y=====788771645986565382857670931201728277259354522091006586227480056773766813434708414634182814605469610675825862309681198009546678805890304470379244706802549711209738456738900708179157995650968524923390636028477996491990041857935710076534784
57分钟的时候剩余y=====211734276470274248421213479515080558094209261403161426472976928770971983402012878862434192476279002676448629053284812990165477270223781016074879565388296625570897101992139424943364607028580306574882764528345887025636871640697728154608050911576064
58分钟的时候剩余y=====113673974110256276640011440893954616977507108088361674713768067104230767855487516909942065030495276842976832222900834943809073925598801325703974069088284490082322192659114478157133514392330199096757429673258286072057757389374419336074572250874009477971968
59分钟的时候剩余y=====61028250151237675793447237963171510503324924605881308889428001142725571397035867408055662550760938121578240056284679343089330113061675839431525215418529675853712093718055693002472817385048215393725877421027089825921010308864595926256310724882897221481641726181376
60分钟的时候剩余y=====65528584632918217863976684538337822512675262610981477734441836263664239363295520464147839027690844604121367992372521126294086479955012420639298938960006125382883085771038515619086546558965639606855449138929375391766620126890659953232430357456840003174979345388227887366144
#include
void main(){
double X=10,Y=89;
for(int i=1;i<=120;i++){ //i:表示半分钟
if(X>0&&Y>0){
if(i%4==0){
Y=2*Y; //Y分裂
}
if(i%6==0){
X=2*X;
Y=Y-X;
continue;
}
if(i%2==0){
Y=Y-X;
}
}
else{
printf("i=%d\n",i);
break;
}
}
printf("Y=%0.1f,X=%0.1f\n",Y,X);
}