20求助!!!

P1422 小玉家的电费

@[JingNuoWang031](/user/583833) 用循环解一下?~~我数学蒻看不懂~~ ``` #include<bits/stdc++.h> using namespace std; int main() { double n; cin>>n; double sum; for(int i=1;i<=n;i++){ if(i<=150){ sum+=0.4463; } else if(i>150&&i<=400){ sum+=0.4663; } else{ sum+=0.5663; } } cout<<fixed<<setprecision(1)<<sum; return 0; } ```
by ivyjiao @ 2022-05-12 09:08:29


@[ivyjiao](/user/578029) 我这也没用数学啊。。
by LubsWangKillThemAll @ 2022-05-12 09:16:00


@[JingNuoWang031](/user/583833) ``` #include<bits/stdc++.h> using namespace std; int main() { double n; cin>>n; double sum; if(n<=150) { sum=n; sum*=0.4463; } else if(n>=151 && n<=400) { sum=150*0.4463; n-=150; n*=0.4663; sum+=n; } else { sum=150*0.4463+250*0.4663; n-=400; n*=0.5663; sum+=n; } cout<<fixed<<setprecision(1)<<sum; return 0; } ```
by ivyjiao @ 2022-05-12 09:22:57


1. ``` double n; ``` 2. ``` n-=150; n-=400; ``` 3. ``` sum=150*0.4463+250*0.4663; ``` 改了这三个地方
by ivyjiao @ 2022-05-12 09:27:46


@[ivyjiao](/user/578029) OK了,谢谢,
by LubsWangKillThemAll @ 2022-05-12 09:28:18


这么分段计费是不对的,当150<n<=400时,代码应改为 ``` sum=150*0.4463+249*0.4663; n=(n-150)*0.4663; sum+=n; ``` 当400<n时,代码应改为 ``` sum=150*0.4463+250*0.4663; n=(n-400)*0.5663; sum+=n; ``` 还有就是n应该设置为浮点型变量(double类型),因为n会变成小数 输出由于个人习惯不同,我更偏向于把sum设为double类型变量,并这样输出 ``` printf("%.1lf",sum); ``` 蒟蒻发言,说错勿喷
by xixisuper @ 2022-05-12 09:56:13


|