CrNidaree @ 2023-09-16 11:57:08
int main(){
int N;
cin>>N;
double m=0;
if(N<=150){
m=N*0.4463;
}
if(N>150&&N<=400){
m=150*0.4463+(N-150)*0.4663;
}
else{
m=150*0.4463+250*0.4663+(N-400)*0.5663;
}cout<<floor(m*10+0.5)/10.0;
# }
by algorithm_is_my_GF @ 2023-09-16 12:18:54
代码没问题啊,应该可以ac的,或者试试把floor换成int?
by Terrible @ 2023-09-16 12:30:30
@CrNidaree
①如果 N<=150
会执行最上面的 if
和最下面的 else
,最后会判断成 N>400
的用电计算。
②floor(m*10+0.5)/10.0
这种保留小数的方式会损失精度,请使用
cout<<fixed<<setprecision(1)<<m;
其中 setprecision
是 iomanip
库中的标识符。
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
int N;
cin>>N;
double m=0;
if(N<=150){
m=N*0.4463;
}
else if(N<=400){
m=150*0.4463+(N-150)*0.4663;
}
else{
m=150*0.4463+250*0.4663+(N-400)*0.5663;
}
cout<<fixed<<setprecision(1)<<m;
return 0;
}
by CrNidaree @ 2023-09-16 13:06:33
@ThroughBall 还是不行qwq @ThroughBall
by CrNidaree @ 2023-09-16 13:08:13
@Terrible 噢噢难怪一直wa一个点 谢谢巨佬