【发布时间】:2021-10-30 01:39:06
【问题描述】:
我试图解决以下问题:“给出了 n 个数字。对于其中的每一个,计算总和 1+(1+2)+(1+2+3)+...+(1+ 2+3+...+x) 并将结果输出到单独的向量中”。我已经得到了一个求和公式,并将其实现到 C++ 中。该代码似乎在 vs 代码上完美运行,但是当我将它上传到我遇到问题的网站时,我得到 0 分,并解释为:Caught fatal signal 11. 我读过一些文章,但没有一篇有帮助我解决问题。代码如下:
#include <iostream>
#define N 1000000
using namespace std;
int v[N], s[N];
int main()
{
int n, i;
cin >> n; // user inputs number of elements
for(i = 0; i < n; i++)
{
cin >> v[i]; // user inputs the elements
s[i] = v[i]*(v[i] + 1)*(v[i] + 2) / 6; // another vector is calculated using the formula
cout << s[i] << " ";
}
return 0;
}
【问题讨论】:
-
当用户输入一个非常大的数字(大于
N)时会发生什么?还是负面的? (反问。) -
你有大量的静态数组分配,在最好的情况下是非常浪费的,在最坏的情况下甚至不够大。使用实际的
std::vector<int> -
你为什么要使用数组?您不使用以前的值,那么为什么要存储它呢?
int num; cin>>num; cout<<(num*(num+1)*(num+2)/6)<<" ";应该具有完全相同的行为。 -
该解决方案不需要数组 - 只需读取每个值
x并输出所需的结果。
标签: c++ algorithm math formula