dp[i][j]表示p为j, k为i时的次数, dp[i][j] = dp[i][i+num[j]+i] + 1(若i+num[j]+i > n则dp[i][j] = 1)
#include <bits/stdc++.h>
#define maxn 100005
#define MOD 1000000007
typedef long long ll;
using namespace std;
int dp[505][maxn];
int num[maxn];
int main() {
//freopen("in.txt", "r", stdin);
int n;
scanf("%d", &n);
for(int i = 1; i <= n; i++)
scanf("%d", num+i);
for(int i = 1; i <= 500; i++) {
for(int j = n; j >= 1; j--) {
if(j+num[j]+i > n)
dp[i][j] = 1;
else
dp[i][j] = dp[i][j+num[j]+i] + 1;
}
}
int q, p, k;
scanf("%d", &q);
while(q--) {
scanf("%d%d", &p, &k);
if(k <= 500)
printf("%d\n", dp[k][p]);
else {
int ans = 0;
while(p <= n) {
p += num[p] + k;
ans++;
}
printf("%d\n", ans);
}
}
return 0;
}