新手求助!为什么代码无法AC

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

BantM @ 2022-03-22 20:57:20

#include <bits/stdc++.h>
#include<iostream>
#include<cstdio>
using namespace std;
double ans1,ans2;
int main(){
    int num,k;int a=0,b=0;
    //为什么a,b定义成double能过,int不行呢
   int c=0,d=0;
    cin>>num>>k;
    for(int i=1;i<=num;i++){
        if(i%k==0){
            a=a+i;
            c++;
        }
        else{
            b=b+i;
            d++;
        }
    }
    ans1=a/c;
    ans2=b/d;
    printf("%.1lf %.1lf",ans1,ans2); 

    return 0;
}

by 金霸王电池 @ 2022-03-22 20:58:53

int 的话被认为是整除


by 金霸王电池 @ 2022-03-22 20:59:16

可以乘1.0


by Esawkm @ 2022-03-22 21:00:03

@Bant_Metor 是输出小数,如果他们是int就会输出整数吧


by LYqwq @ 2022-03-22 21:00:33

你在计算答案时用到 a/cb/d 需要用浮点数类型计算,整型计算结果不对,没有小数。

其实定义成 int 也行,在计算的式子中乘上一个 double 类型的数就行,这样整个式子都会变成浮点数类型计算,可以直接写成 1.0*a/c1.0*b/d


by BantM @ 2022-03-22 21:01:06

@金霸王电池 谢谢!


by BantM @ 2022-03-22 21:01:43

@lele2522650685 谢谢


by BantM @ 2022-03-22 21:02:10

@LYqwq 谢谢,我懂了


|