ac代码:
#include <iostream>
#include <cstdio>
#include <cmath>
#include <set>
#include <queue>
#include <algorithm>
#define ll long long
using namespace std;
const int maxn=1e5+10;
ll b,q,l,m;
set<ll> st;
int main(){
while(~scanf("%I64d%I64d%I64d%I64d",&b,&q,&l,&m)){
st.clear();
ll tmp;
for(ll i=1;i<=m;i++){
scanf("%I64d",&tmp);
st.insert(tmp);
}
if(abs(b) > l){
printf("0\n");
continue ;
}
if(q==0){
if(st.find(0) == st.end()){
printf("inf\n");
}
else if(st.find(b)==st.end()){
printf("1\n");
}
else
printf("0\n");
continue ;
}
if(b==0 || q==1){
if(st.find(b)==st.end()){
printf("inf\n");
}
else
printf("0\n");
continue ;
}
if(q==-1){
if(st.find(b)==st.end() || st.find(-b)==st.end()){
printf("inf\n");
}
else
printf("0\n");
continue ;
}
int cnt=0;
while(abs(b) <= l){
if(st.find(b) == st.end()){
cnt++;
}
b=b*q;
}
printf("%d\n",cnt);
}
return 0;
}