#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
LL num[50005] = {0};
const LL maxn = 1e9 + 7;
LL search(LL x, LL n)
{
LL k;
for(int i = i; i <= n; i++)
{
if(num[i] == x)
{
k = i;
break;
}
}
return k;
}
LL C(LL n, LL m)
{
LL ans = 1;
for(LL i = 1; i <= m; i++)
{
ans = ans * (n - m + i) / i;
}
return ans;
}
LL Lucas(LL k, LL x)
{
if(x == 0 || k == x) return 1;
return C(k % maxn, x % maxn) * Lucas(k / maxn, x / maxn) % maxn;
}
int main()
{
LL T, n, q, x, k, h;
cin >> T;
while(T --)
{
memset(num, 0, sizeof(num));
cin >> n >> q;
for(int i = 1; i <= n; i++)
{
cin >> h;
num[i] = h;
}
for(int i = 1; i <= q; i++)
{
cin >> x >> k;
LL gx = search(x, n);
LL fx = (Lucas(k, gx) % n + 1);
cout << num[fx] << endl;
}
cin >> T;
}
return 0;
}
请问我这个为什么一直显示段错误?
全部评论
(0) 回帖