求助于一下好心人!!!有没有大大帮我看看程序哪里有问题?拜托了!!!

P1089 [NOIP2004 提高组] 津津的储蓄计划

f = 0 那里可以直接跳出循环了, 在 c = i 后头 加个break。
by 朦胧_XY @ 2022-08-16 20:40:07


@[朦胧_XY](/user/358971) 还是有点问题,最后输出的答案是1530
by muyingmiao @ 2022-08-16 20:42:49


if(s1>=100){ a +=100 ; s1 = s1-100; } 改成 a += s1 / 100 * 100; s1 %= 100;
by 朦胧_XY @ 2022-08-16 20:59:43


if(b>300){ if(s1<b-300){ f = 0; c = i; }else if(s1>=(b-300)){ s1 = s1-(b-300); f = 1; } } 改成 if(s1+300<b){ f = 0; c = i; break; } else{ s1 = s1+300-b; }
by 朦胧_XY @ 2022-08-16 21:08:09


删掉 if(s1>=b){ a+=300; s1 = s1-b; } else{ s = (300-b)/100*100; a+=s; s1 += 300-b-s; }
by 朦胧_XY @ 2022-08-16 21:11:51


模拟最好别打多余的特判,容易乱
by 朦胧_XY @ 2022-08-16 21:17:33


@[朦胧_XY](/user/358971) 大神还是有一点点问题,运行出来是3160 ```c #include<iostream> using namespace std; //a1[j],a1[i]每月的钱数,s存入的钱,s1我手中的钱,a总共存入多少钱 int a1[13],s = 0,s1 = 0,a = 0,f = 1,b,c; int main(){ for(int j = 1;j<=12;j++){ cin >> a1[j]; } for(int i = 1;i<=12;i++){ b = a1[i]; s = 0; if(s1+300<b){ f = 0; c = i; break; } else{ s1 = s1+300-b; } if(s1>=b){ a+=300; s1 = s1-b; } else{ s = (300+s1-b)/100*100; a+=s; s1 += 300-b-s; } a+=s1/100*100; s1 %= 100; } if(f==1){ cout<<a+(a*0.2)+s1; } else{ cout<<'-'<<c; } return 0; } ```
by muyingmiao @ 2022-08-16 21:18:38


@[muyingmiao](/user/763718) 你再看一下我发的,没删干净。。
by 朦胧_XY @ 2022-08-16 21:20:04


20~28行
by 朦胧_XY @ 2022-08-16 21:24:17


@[朦胧_XY](/user/358971) 谢谢大神!!!终于通过了,真的万分感谢!!!!!!!
by muyingmiao @ 2022-08-17 17:22:38


|