qiiie_yyy @ 2023-04-06 17:58:34
过样例的时候B的平均值是50.0 我以为数据是错的,但是后面算了一下发现没问题 如果是因为printf用法什么的也希望告知一下(差不多才学半年有些地方不太懂)谢谢!
#include<iostream>
using namespace std;
int main(){
int n,k;
cin>>n>>k;
double ap,bp;
int ag=0,bg=0,az=0,bz=0;
for(int i=1;i<=n;i++){
if(i%k==0){
ag++;
az+=i;
}
else{
bg++;
bz+=i;
}
}
ap=az/ag;
bp=bz/bg;
printf("%.1lf %.1lf",ap,bp);
return 0;
}
by TheShuMo @ 2023-04-06 18:29:03
@qiiie_yyy az\ 首先你所有定义的变量都是 int 类型的,所以对 int 类型进行的任何运算都会切断小数,所以要不你在运算的时候把其中一个数强制转换成 double
即(double)az/ag; (double)bz/bg;
这时候出来的就是非整数了。
或者直接全部用double定义(把int 换成double)
by qiiie_yyy @ 2023-04-08 13:51:54
@The_ShuMo 好的好的!非常感谢!!