找规律的题目:
1
2 3
4 5 6
7 8 9 10
11 12 13 14 15
。。。。
输入 一个n,求出第n个位置的数。
思路:
先求出第n个数所在的行,减去第一个数就行了,第一个数显然是个累加法的数列求法.
代码如下:
#include<bits/stdc++.h>
#define mem(x) memset(x,0,sizeof(x));
#define mem1(x) memset(x,-1,sizeof(x));
using namespace std;
const double eps = 1e-8;
const int INF = 1e8;
const int maxn = 10000 + 10;
const int maxt = 100 + 10;
typedef long long ll;
typedef unsigned long long llu;
int main()
{
ll n,k;
while(cin >> k){
double det = sqrt(1 - 4*(2-2*k));
ll n = (1+det)/2;
cout << k-(n-1)*n/2 << endl;
}
return 0;
}