条件: https ://www.eolymp.com/ru/problems/7310
我的决定:
#include <iostream>
#include <cmath>
using namespace std; /* eolymp - 7310*/
int main()
{
int bs, n;
cin >> n >> bs;
int ans = n * (n + 1) / 2;
if ((-1. + sqrt(8. * bs + 1.)) / 2. == int((-1. + sqrt(8. * bs + 1.)) / 2.))
ans -= 1;
cout << ans;
return 0;
}
我的想法:如果 badStep(bs) 不等于差为 1 的算术级数的任何成员,那么一切都很好,我们可以正常进行所有步骤,即我们只需显示这样一个元素的总和进展。如果不是,我们干脆不迈出第一步,然后我们肯定不打 bs 进一步的步骤,答案将是相同的数量减 1。
(-1. + sqrt(8. * bs + 1.)) / 2.
这是从二次方程 ni(ni + 1) = bs 的解中得出的结果,其中 ni 是级数中某个成员的数量。嗯,即 我检查元素的总和是否= bs,元素的数量是整数,结果我们进入bs,我们需要减去1(不要打)
问题:(https://www.eolymp.com/ru/submissions/11153820)由于某种原因,一个测试没有通过,也许是某种异常,但不管我怎么想,我就是想不通在哪里。请帮帮我 )
提示:如果你有
n == 3
,例如,badStep
几千?但它适合进展吗?在这里,在膝盖上...