gpt4 book ai didi

c++ - Online Judge :Array Normalization, 不知道为什么我错了

转载 作者:太空宇宙 更新时间:2023-11-04 12:35:30 27 4
gpt4 key购买 nike

描述:对于由多个非负整数组成的数组,数组归一化意味着每个元素都将除以数组的总和。假设数组至少由一个元素组成,并且元素的总和不会超过诠释。

输入:几个非负整数

输出:归一化的结果。

示例输入1 2 3 4

示例输出0.10 0.20 0.30 0.40

我认为这是一个简单的问题,但接受率只有 12/1352。这是我的代码。

#include <vector>
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int a,t=0,sum=0;
vector<int> arr;
while(cin>>a)
{
arr.push_back(a);
t++;
}
for(int i=0;i<t;i++)
sum+=arr[i];
if(sum)
{
cout<<setiosflags(ios::fixed)<<setprecision(2)<<1.0*arr[0]/sum;
for(int i=1;i<t;i++)
{
cout<<setiosflags(ios::fixed)<<setprecision(2)<<" "<<1.0*arr[i]/sum;
}
}else
{
for(int i=0;i<t;i++)
if(i==0)
cout<<"0.00";
else
cout<<" 0.00";
}
return 0;
}

输出与示例输出相同。但是我得到了 75% 的错误答案,我不知道我没有考虑到哪些提示。

我想通了,这不是什么好问题,0/0应该输出1

最佳答案

是的,的确,你是对的,这是一个简单的问题。你的输出语句

cout<<setiosflags(ios::fixed)<<setprecision(2)<<" "<<1.0*arr[i]/sum;

格式化输出
  • setiosflags(ios::fixed)
  • 设置精度(2)

意思是,您正好显示了 2 位数的分数。每次,当

(1.0*arr[i] / sum) < 0.01

结果将精确显示为 0.00

希望对你有帮助

关于c++ - Online Judge :Array Normalization, 不知道为什么我错了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56577765/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com