蒟蒻求助QAQ

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

服苏同学 @ 2020-09-27 21:44:36

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,k,sum1=0,num1=0,num2;
    float ans1,ans2;
    cin>>n>>k;
    for(int i=1;i<=n;i++)
        if(i%k==0){
            sum1+=i;
            num1++;
        }
    num2=n-num1;
    ans1=sum1/num1;
    ans2=((1+n)*n/2-sum1)/num2;
    cout<<fixed<<setprecision(1)<<ans1<<' ' <<fixed<<setprecision(1)<<ans2;
    return 0;
} 

样例都没过,想不通啊。。。


by metaphysis @ 2020-09-28 08:17:05

@服苏同学

ans1=sum1/num1; => ans1=1.0*sum1/num1;
ans2=((1+n)*n/2-sum1)/num2; => ans2=1.0*((1+n)*n/2-sum1)/num2;

原代码右侧均为整数,进行的是整数运算,除法为整除,不符合题意。需要将其乘以浮点数1.0,强制转换为浮点数运算,从而使得除法为小数除法。

有空请您访问我的 CSDN博客,里面有我写的一本书,内有编程竞赛相关内容的介绍,并附有对应的练习题目(题目源自UVa OJ),可免费下载此书的PDF版本:《C++,挑战编程——程序设计竞赛进阶训练指南》。


by 服苏同学 @ 2020-09-28 18:08:14

@metaphysis 没想到犯了这么低级的错误...受教了(这就去拜读一下您的 作品


|