我需要帮助找到下一个问题的序列公式。
我现在的想法和目标是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;}
答案 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 忽略否定的答案。