CF789B. Masha and geometric depression

时间:2023-03-10 01:26:21
CF789B. Masha and geometric depression
 /*
CF789B. Masha and geometric depression
http://codeforces.com/contest/789/problem/B
水题
各种特判,贼烦
*/
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <vector>
#include <queue>
#include <map>
#include <iostream>
//#define test
using namespace std;
const int Nmax=1e6+;
long long num[Nmax];
map<long long,int> f;
int main()
{
#ifdef test
#endif
long long a,q,l;
int m;
scanf("%I64d%I64d%I64d%d",&a,&q,&l,&m);
//cin>>a>>q>>l>>m;
for(int i=;i<=m;i++)
{
scanf("%I64d",&num[i]);
f[ num[i] ]=;
}
if(q==1LL)
{
if(abs(a)>abs(l))
{
printf("0\n");
return ;
}
if(f[a]==)
printf("0\n");
else
printf("inf\n");
return ;
}
if(q==-1LL)
{
if(abs(a)>abs(l))
{
printf("0\n");
return ;
}
if(f[a]== && f[-a]==)
{
printf("0\n");
return ;
}
else if(f[a]== && f[-a]==)
{
printf("inf\n");
return ;
}
else
{
printf("inf\n");
return ;
}
}
if(abs(a)>abs(l))
{
printf("0\n");
return ;
}
if(q==0LL)
{
if(f[a]== && f[]==)
{
printf("1\n");
return ;
}
if(f[a]== && f[]==)
{
printf("0\n");
return ;
}
if(f[a]== && f[]==)
{
printf("inf\n");
return ;
}
if(f[a]== && f[]==)
{
printf("inf\n");
return ;
}
return ;
}
if(a==0LL)
{
if(f[a]==)
printf("0\n");
else
printf("inf\n");
return ;
}
//if(abs(a)>abs(l) && f[a]==0)
//{
//printf("0\n");
//return 0;
//}
//if(abs(a*q)>abs(l) && f[a*q]==0)
//{
//printf("1\n");
//return 0;
//}
//else if(abs(a*q)>abs(l))
//{
//printf("0\n");
//return 0;
//}
//if(q==1LL || q==-1LL || q==0LL)
//{
//printf("inf\n");
//return 0;
//}
//if(a==0LL)
//{
//printf("inf\n");
//return 0;
//}
long long ans=0LL;
while()
{
if(abs(a)>abs(l))
break;
//if(ans>=32LL)
//{
//printf("inf\n");
//return 0;
//}
if(f[a]==)
ans++;
a*=q;
}
printf("%I64d\n",ans);
//cout<<ans<<endl;
return ;
}