给定n和k,将从1到n之间的所有正整数可以分为两类:A类数可以被k整除,而B类数不能,请输出这两类数的平均数,四舍五入到小数点后1位。
测试数据保证两类数的个数都不会是0.
不知道哪里有问题,有的测试过不去。
cout << fixed << setprecision(1) <<z/o << " " << x/p;
要写在一行,因为 fixed 和setprecision(1)只对本次cout生效。
另外,把o和p改成int类型。
代码修改如下:
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int n,k;
cin >> n>>k;
float z=0,x=0;
int o=0,p=0;
for (int i=1;i<=n;i++)
{
if (i%k==0)
{
z = z+ i;
o++;
}else
{
x = x+ i;
p++;
}
}
cout << fixed << setprecision(1)<<z/o<<" " << x/p;
return 0;
}
题目有没有给出测试数据的数值范围?你用double
试试。