jd123 @ 2022-09-15 19:49:23
int main(){
int n,k,sum1=0,sum2=0,cnt1=0,cnt2=0,c=1;
scanf("%d %d",&n,&k);
for(;c<=n;c++)
{
if(c=k||(c>k&&c%k==0))
{
sum1+=c;
cnt1++;
}else {
sum2+=c;
cnt2++;
}
}
double a,b;
a=sum1/cnt1;
b=sum2/cnt2;
printf("%.1d %.1d",a,b);
return 0;
}
by WA_sir @ 2022-09-15 19:59:55
@jd123
首先,c=k
改为c==k
by WA_sir @ 2022-09-15 20:01:06
还有,把int改为double
by WA_sir @ 2022-09-15 20:02:54
但n和k不用改
by jd123 @ 2022-09-15 20:07:09
@wztony2022 我刚刚找出一个错误,就是最后的a和b是double型,要用%f输出,但是也只有第一个和第五个ac了,中间三个wa
by WZWZWZWY @ 2022-09-15 20:07:26
第7行if(c=k||(c>k&&c%k==0))
错了,c=k是赋值语句,应为c==k.
除法运算不对,sum1为整数,cnt1也是整数,整数除以整数值会是整数,所以应该在被除数或除数那里乘以1.0
输出也有问题,%d是整数,双精度浮点数是%lf
by WZWZWZWY @ 2022-09-15 20:08:25
@jd123
by 初星逝者 @ 2022-09-15 20:13:50
@jd123
c=k||(c>k&&c%k==0)
改为 c%k==0
%f
改为%.1f
by 初星逝者 @ 2022-09-15 20:15:37
@初星逝者 还有a=sum1/cnt1;
改为
a=1.0*sum1/cnt1;
下同