公式序列

时间:2015-02-08 03:46:33

标签: c++ sequence formula

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

我现在的想法和目标是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 <= i <= 2 * 10 ^ 9)。输入以测试用例结束,其中i为0,并且不得处理此情况。

     

输出规格

     

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

     

示例输入

1
25
100
0
     

示例输出

1
7
14

谢谢solopilot!我制作了代码,但在线评判显示时间限制超出,可能是我的错误?

#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;}  

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

F(n)= ceiling((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 忽略否定的答案。