40分,求大犇解惑

P5719 【深基4.例3】分类平均

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 谢谢大佬!


|