40分,估计是需要四舍五入,求助大佬,不知道我这么写有什么问题

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

wzy20110830 @ 2024-02-20 21:08:31

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n,k,sa1=0,sb1=0,sa2=0,sb2=0;
    double aa,ab;
    cin>>n>>k;
    for(int i=1;i<=n;i++)
    {
        if(i%k==0)
        {
            sa1+=i;
            sa2++;
        }
        else
        {
            sb1+=i;
            sb2++;
        }
    }
    aa=sa1/sa2;
    ab=sb1/sb2;
    cout<<fixed<<setprecision(1)<<aa<<' '
    <<fixed<<setprecision(1)<<ab;
    return 0;
}

by AC_love @ 2024-02-20 21:10:28

你的 sa1sa2sb1sb2 都是 int,它们的运算结果也是 int 的,相当于把小数部分整丢了


by Elairin176 @ 2024-02-20 21:10:57

@wzy20110830

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n,k,sa1=0,sb1=0,sa2=0,sb2=0;
    double aa,ab;
    cin>>n>>k;
    for(int i=1;i<=n;i++)
    {
        if(i%k==0)
        {
            sa1+=i;
            sa2++;
        }
        else
        {
            sb1+=i;
            sb2++;
        }
    }
    aa=sa1/(double)sa2;
    ab=sb1/(double)sb2;
    cout<<fixed<<setprecision(1)<<aa<<' '
    <<fixed<<setprecision(1)<<ab;
    return 0;
}

要有类型转换。


by AC_love @ 2024-02-20 21:11:41

aa=sa1/sa2;

就拿这行代码举例,假如 sa = 15, sa2 = 6,你的 aa 会是 2 而不是 2.5


by xingchen_wzt @ 2024-04-10 22:30:09

Hi!!!

我的思路

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,k,ag=0,bg=0;cin>>n>>k;
    double ap=0,bp=0;
    for(int i=1;i<=n;i++){
        if(i%k==0){
            ag++;
            ap+=i;
        }else{
            bg++;
            bp+=i;
        }
    }
    cout<<fixed<<setprecision(1)<<ap/ag<<" "<<fixed<<setprecision(1)<<bp/bg;
}

萌新中的大佬就是我!!!


|