c++一个简单的分类题

给定n和k,将从1到n之间的所有正整数可以分为两类:A类数可以被k整除,而B类数不能,请输出这两类数的平均数,四舍五入到小数点后1位。

测试数据保证两类数的个数都不会是0.
不知道哪里有问题,有的测试过不去。

img

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试试。