服苏同学 @ 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 没想到犯了这么低级的错误...受教了(这就去拜读一下您的 作品