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

· · 题解

此题略有小坑。按常规套路出牌只能过三个点(一共五个)

定位:水题,但是稍微有点弯。 弯在于要考虑周全。

事情是这样的。分别用i、j存储两类数的个数,sum1和sum2存储两类数的和。 然后对应相除,保留一位小数,结束。

弯弯绕

(1)k没说是几,有可能是0.

(2)i、j有可能是0.

当时想了半天该怎么输出,随便乱写一下竟然过了!

下面是代码:

#include <bits/stdc++.h>
using namespace std;
int main()
{
    long long int k,n,i=0,j=0,sum1=0,sum2=0;
    double c=0.0,d=0.0;
    cin>>n>>k;
    if(k==0)return 0; //k=0 没得算。
    for(int p=1;p<=n;p++)
    {
        if(p%k==0)
        {
            sum1+=p;
            i++;
        }
        else
        {
            sum2+=p;
            j++;
        }
    }
    if(i!=0)c=sum1*1.0/(i*1.0);
    if(j!=0)d=sum2*1.0/(j*1.0);
    printf("%.1lf %.1lf",c,d);
    return 0;
}