@[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