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

sudo_rmrf @ 2023-08-05 12:56:59

#include<bits/stdc++.h>
#include<iomanip>
using namespace std;
int main() {
    int n, k, a, b, na, nb;
    cin >> n >> k;
    for (int i=0; i<=n; i++) {
        if(a%k==0) {
            a=a+i;
            na++;
        } else {
            b=b+i;
            nb++;
        }
    }
    cout << fixed << setprecision(1) << a/na <<" "<< b/nb;
    return 0;
}

by dingzj2022 @ 2023-08-05 13:20:22

多少分?


by Parrhesiates @ 2023-08-05 13:38:12

@aDecay 不应该判断i%k是否等于0吗


by 123456zzr @ 2023-08-05 13:48:02

把a,b,na,nb初始化为0,循环从1开始,你这个输出我看不明白就用自己习惯的方式了。另外你要不要看看你循环里判断的是什么?然后就OK了@aDecay


#include<bits/stdc++.h>
#include<iomanip>
using namespace std;
int main() {
    int n, k, a=0, b=0, na=0, nb=0;
    cin >> n >> k;
    for (int i=1; i<=n; i++) {
        if(i%k==0) {
            a=a+i;
            na++;
        } else {
            b=b+i;
            nb++;
        }
    }
    printf("%.1f",1.0*a/na);
    cout<<" ";
    printf("%.1f",1.0*b/nb);
    return 0;
}

by a_small_octopus_ball @ 2023-08-12 17:43:28

@aDecay

问题如下(虽然你已经A了)

  1. 变量未初始化

2.应该用i进行取余

正解如下:

#include<bits/stdc++.h>
using namespace std;
double na,nb;//放在全局变量自动初始化,这里我怕精度不对开了double
int main(){
    int n,k,a=0,b=0;//局部变量初始化

    cin>>n>>k;
    for(int i=1;i<=n;i++){
        if(i%k==0){ //用i取余才包含了n以内的全部整数
           a+=i;
           na++;
        }    
        else{
            b+=i;
            nb++;
        } 
    }
    cout<<fixed<<setprecision(1)<<a/na<<" "<<b/nb;
    return 0;
}

就当以后的提醒吧~


|