Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从一系列数字中获得数值k的技术是什么?_C++_Sequence - Fatal编程技术网

C++ 从一系列数字中获得数值k的技术是什么?

C++ 从一系列数字中获得数值k的技术是什么?,c++,sequence,C++,Sequence,给定序列s:1,1,2,2,3,1,2,3,4,1,2,3,4,5,1,2,3,4,5,5,1,2,3,4,5,1,2。。。 对于自然数k,如果(x1>0)返回x1,则00),则返回x2; 其他回报-32000; } } void main() {int k,n; 浮动x; cin>>k; x=方程式(1,1,-2*k); n=x*(x+1)/2; 如果(n==x)f考虑按顺序生成序列中的所有项,将它们存储在具有索引的数据结构中(例如向量),然后只需查找适当的k(请记住,向量将从零开始索引,而赋

给定序列s:1,1,2,2,3,1,2,3,4,1,2,3,4,5,1,2,3,4,5,5,1,2,3,4,5,1,2。。。 对于自然数k,如果(x1>0)返回x1,则00),则返回x2; 其他回报-32000; } } void main() {int k,n; 浮动x; cin>>k; x=方程式(1,1,-2*k); n=x*(x+1)/2;
如果(n==x)f考虑按顺序生成序列中的所有项,将它们存储在具有索引的数据结构中(例如向量),然后只需查找适当的k(请记住,向量将从零开始索引,而赋值显然不从零开始)。

它的意思是:

x(x+1)/2=k

方程
使用二次公式求解
x

然后
n=x*(x+1)/2
这应该使
n==k
,除非发生了奇怪的事情。
那么如果
n==x
n
是您的答案
否则输出
k-n*(n+1)/2


我要做的是:

找出您已通过的完整序列数。然后计算差异。
为此,您需要在
x(x+1)/2=k中求解
x
,然后向下取整
x

然后执行
k-|x |(|x |+1)/2
(这里的
|
用于四舍五入)


那么你能指出你的解决方案与我的不同之处吗


实际上,当
x==“x”

您的代码几乎正确,只需将其更改为:

void main()
{ 
  int k;
  cin>>k;
  int n = Equation(1,1,-2*k);
  int x = n*(n+1)/2;
  if (x == k) f<<n;
  else f<<k - x;
  f.close();
}
void main()
{ 
int k;
cin>>k;
int n=方程(1,1,-2*k);
int x=n*(n+1)/2;

如果(x==k)F你坚持使用哪一部分?你试过在调试器中运行它来跟踪它的行为吗?序列不是1000个元素长,或者你错过了一个
6
。不回答问题这是迄今为止找到k的最简单的方法,但我忘了提到我需要使用二次方程来解决问题。比不管怎么说,你的方法对我来说更吸引人。n妨碍了我理解代码,但现在很明显,通过将x四舍五入,更容易找到解决方案。谢谢你,非常感谢!@user1012732我已将修复包含在你的代码中。
void main()
{ 
  int k;
  cin>>k;
  int n = Equation(1,1,-2*k);
  int x = n*(n+1)/2;
  if (x == k) f<<n;
  else f<<k - x;
  f.close();
}