【问题标题】:Formula Sequence公式序列
【发布时间】:2015-02-08 03:46:33
【问题描述】:

我需要帮助找到下一个问题的序列公式。

我现在的想法和拥有的是Sn=n(10^n-1)/9,但它只是在某些情况下有效......

问题描述如下:

说明

Sn 基于序列正整数数。 n 的值可以被找到 n 次,所以这个序列的前 25 项如下:

1 2 2 3 3 3 4 4 4 4 5 5 5 5 5 6 6 6 6 6 6 7 7 7 7...

对于这个问题,你必须编写一个程序来计算序列中的第 i 项。即确定Sn(i)

输入规范

输入可能包含多个测试用例(但不超过 10^5)。每个测试用例都在自己的一行中给出,并包含一个整数 i (1

输出规格

对于输入中的每个测试用例,您必须在一行中打印 Sn(i) 的值。

示例输入

1
25
100
0

样本输出

1
7
14

感谢独奏!我制作了代码,但在线法官告诉我超出了时间限制,我的错误可能是什么?

#include <iostream> #include <math.h> using namespace std; int main() {int i;
int NTS;
cin>>i;
while (i>=1){
    NTS=ceil((sqrt(8*i+1)-1)/2);
    cout<<" "<<NTS<<endl;
    cin>>i;
}
return 0;}  

【问题讨论】:

  • 查看整数序列在线百科:oeis.org/…
  • "...但是在线法官告诉我时间限制已超过"所以你可能回答慢了?

标签: c++ sequence formula


【解决方案1】:

F(n) = 上限((sqrt(8*n+1)-1)/2)


说 F(n) = a。

然后 n ~= a * (a+1) / 2。

重新排列:a^2 + a - 2n ~= 0。

求解:a = F(n) = (-1 + sqrt(1+8n)) / 2.
忽略否定的答案。

【讨论】:

    【解决方案2】:

    图案看起来像金字塔。
    等级:1 3 6 10 15 21 28...
    编号:1 2 3 4 5 6 7...

    Level = n(n+1)/2 => elements
    3     = 3*4/2    => 6
    6     = 6*7/2    => 21 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-02
      • 1970-01-01
      • 2015-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多