BlakrPander @ 2020-10-13 19:43:05
先贴上代码。
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,k;
float A=0,B=0;
float cA=0,cB=0;
cin>>n>>k;
for(int i=1;i<=n;i++){
if(i%k==0){
A+=i;
cA++;
}
/* else{
B+=i;
cB++;
}*/
}
float sum=(1+n)*n/2;
float b=(sum-A)/(n-cA),a=A/cA;
printf("%.1f %.1f",a,b);
return 0;
}
注释中的是我原来求B的方法,然后b是用
b=B/cB;
来求的,但是在过题的时候只有四十分。第一个WA的数据输入是10000 19,而答案最后的b是5000.2。
我的代码里第一次求b的方法求出来b=5000.0,而换了之后b就是5000.2了,请问这是为啥....。
by Wu_Ren @ 2020-10-13 20:36:14
@BlakrPander 精度问题,float
是单精度浮点数,在整数部分较大时精度丢失严重
这边的建议是把float
换成double
然后把
printf("%.1f %.1f",a,b);
换成
printf("%.1lf %.1lf",a,b);
by BlakrPander @ 2020-10-13 21:53:10
@Wu_Ren 好的好的 谢谢大佬