DESCRIPTION
Given a number sequence [3,7,22,45,116,...][3,7,22,45,116,...]. Please tell me the kk-th number.
INPUT
A number T (T<100)T (T<100) indicates the number of the input cases. Then for each case there only is one integer k (1≤k≤10000)k (1≤k≤10000).
OUTPUT
For each case, ouput the kk-th number of the sequence in one line.
SAMPLE INPUT
2 1 4
SAMPLE OUTPUT
3 45
题解:规律就是第 n 个素数的平方减去n:2 ^ 2 - 1,3 ^ 2 - 2,5 ^ 2 - 3,7 ^ 2 - 4,11 ^ 2 - 5 ............
贴个水水的代码:
#include<cstdio>
#include<algorithm>
using namespace std;
const int MAX=1e7;
typedef long long LL;
bool sushu[MAX+10]={1,1};
LL a[MAX+10];
void init()
{
for(LL i=1;i<=MAX;i++)
{
if(sushu[i]==1) continue;
for(LL j=i*2;j<=MAX;j=j+i)
{
sushu[j]=1;
}
}
LL k=1;
for(LL i=2;i<=MAX;i++)
{
if(sushu[i]==0)
{
a[k++]=i;
}
}
}
int main()
{
int t;
scanf("%d",&t);
init();
while(t--)
{
int n;
scanf("%d",&n);
printf("%lld\n",a[n]*a[n]-n);
}
return 0;
}