求指教:破防了,本地测试通过但提交就WA

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

Border_Su @ 2023-08-24 01:13:17

1#2绿,#2#3#4全红

排查了半天也发现不了问题。 遂下载了#2的测试内容。

本地输入——>这不答案完全一样吗Kora

如下:

in:1000 7
out:500.5 500.5

蒟蒻直接心态炸裂,怀疑是自己尝试逆天操作的锅。遂复制自己的输出值与out的值,用如下代码判断是不是输出字符错误:

    if("500.5 500.5"=="500.5 500.5")
    {
        cout<<"YES";
    }

也输出了YES!

总之问题如上,先贴自己剑走偏锋的逆天代码(基于字符的小数点处理) 全代码如下:

#include <iostream>
using namespace std;

int main()
{
    int n, k;
    int Asum = 0, Bsum = 0;
    double average_a;
    double average_b;
    cin>>n>>k;
    for(int i = k; i<=n; i+=k)
    {
        Asum += i;
    }
    Bsum = (1+n)*n/2 - Asum;
    if (Asum==0)
    {average_a=0;}
    else average_a = int(1.0*Asum/(n/k)*10)*1.0/10;
    //cout<<average_a;
    if (Bsum==0)
    {average_b=0;}
    else average_b = int(1.0*Bsum/(n-(n/k))*10)*1.0/10;

    //cout<<average_a<<" "<<average_b<<endl;

    char a1, a2, b1, b2;
    if (average_a==int(average_a))
    {a1 = '.';a2 = '0';}
    else{a1 = '\0';a2 = '\0';}
    if (average_b==int(average_b))
    {b1 = '.';b2 = '0';}
    else{b1 = '\0';b2 = '\0';}

    cout<<average_a<<a1<<a2;
    cout<<" ";
    cout<<average_b<<b1<<b2;
    /*if("500.5 500.5"=="500.5 500.5")
    {
        cout<<"YES";
    }*/
}

其实知道可以

scanf("%.1f", x);

但是估计是大半夜神志不清,硬是要用cout去写,最终导致了这个令人绝望的产物。

不过写都写了,还是想知道到底哪里出问题了

实在无奈,还请大佬指点迷津。

代码之神,对不起,我再也不乱写代码了

by iBaeJuhyun @ 2023-08-24 07:02:23

   char a1, a2, b1, b2;
    if (average_a==int(average_a))
    {a1 = '.';a2 = '0';}
    else{a1 = '\0';a2 = '\0';}
    if (average_b==int(average_b))
    {b1 = '.';b2 = '0';}
    else{b1 = '\0';b2 = '\0';}

    cout<<average_a<<a1<<a2;
    cout<<" ";
    cout<<average_b<<b1<<b2;

改为

   if (average_a==int(average_a))
    cout<<average_a<<".0 ";
    else cout<<average_a<<" ";
    if (average_b==int(average_b))
    cout<<average_b<<".0 ";
    else cout<<average_b<<" ";

直接输出就好,"\0"会输出一些奇怪的东西,可以去洛谷ide调; 而且没有四舍五入,

average_a = int(1.0*Asum/(n/k)*10)*1.0/10;
 else average_b = int(1.0*Bsum/(n-(n/k))*10)*1.0/10;

这里开个万能头然后用int改成round就行了


by Border_Su @ 2023-08-24 15:04:00

@HanSohee

成功了!

感谢大佬!!

没想到是四舍五入和“\0”的问题。感谢大佬的指教,不然我还要我查半天的字符是不是有问题。

( 」゚Д゚)」<太感谢了


|