G324330111 @ 2024-04-15 22:34:19
#include <stdio.h>
int main()
{
unsigned int n,k;
double c=0.0,d=0.0;
int i,j,a=0,b=0,count=0;
scanf("%u %u",&n,&k);
for(i=1;i<=n;i++){
if(i%k==0){
a = a+i;
count++;
}
else{
b = b+i;
}
}
c = a /count;
d = b /(n-count);
printf("%.1lf %.1lf",c,d);
return 0;
}
by Terrible @ 2024-04-15 23:02:11
@G324330111
int/int
的结果类型依然是 int
,进行的是向零整除,是不合题意的。
如果除号两边有一个是 double
那么进行的除法是浮点除法,结果是 double
。
你只需要修改 c=a*1.0/count;d=b*1.0/(n-count);
就过了,1.0
是一个double
类型,然后中间乘法会隐式生成一个 double
中间量。
by G324330111 @ 2024-04-16 14:03:38
@Terrible 谢谢大佬!