Pagini recente » Cod sursa (job #526456) | Cod sursa (job #3141868) | Cod sursa (job #35658) | Cod sursa (job #1209797) | Cod sursa (job #1947408)
#include <bits/stdc++.h>
#define ll long long
#define f first
#define s second
using namespace std;
long long i,j,n,m,a,b,x,y,ans,sol[200010],v[200010],k,q,l;
char c;
string s1,s2;
set< long long > sit,mip;
int main()
{
#ifndef ONLINE_JUDGE
ifstream cin(".in");
#endif
ios_base::sync_with_stdio(false);
cin.tie( 0 );
cin>>b>>q>>l>>m;
if( b > l )
{
cout<<0;
return 0;
}
for( i = 1 ; i <= m ; i++ )
{
cin>>x;
sit.insert( x );
}
if( q == 0 )
{
if( sit.find( 0 ) == sit.end() )
{
cout<<"inf";
}
else
{
if( sit.find( b ) != sit.end() )
cout<<0;
else
cout<<1;
}
return 0;
}
if( q == 1 )
{
if( sit.find( b ) == sit.end() )
cout<<"inf";
else
cout<<0;
return 0;
}
if( q == -1 )
{
if( sit.find( b ) == sit.end() || sit.find( -b ) == sit.end() )
cout<<"inf";
else
cout<<0;
return 0;
}
if( b == 0 )
{
if( sit.find( 0 ) == sit.end() )
cout<<"inf";
else
cout<<0;
return 0;
}
if( b == 1 )
{
if( sit.find( q ) == sit.end() )
cout<<"inf";
else if( sit.find( 1 ) == sit.end() )
cout<<1;
else
cout<<0;
return 0;
}
if( b == -1 )
{
if( sit.find( q ) == sit.end() || sit.find( -q ) == sit.end() )
cout<<"inf";
else if( sit.find( -1 ) == sit.end() )
cout<<1;
else
cout<<0;
return 0;
}
for( i = b ; abs( i ) <= l ; i *= q )
{
if( sit.find( i ) == sit.end() )
++ans;
mip.insert( i );
}
cout<<ans;
return 0;
}