Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- #define fr(i,a,b) for(i=a;i<=b;i++)
- #define frn(i,a,b) for(i=a;i>=b;i--)
- int f,k,r,l,i,j,x,cnt,n,befR,befa1;
- int ar[100007],flag=0,zero=0;
- int power(int b,int p)
- {
- int ii,mult=1;
- fr(ii,1,p)
- mult*=b;
- return mult;
- }
- int main()
- {
- cin>>f>>r>>l>>k;
- fr(i,0,k-1)
- {
- scanf("%d",ar+i);
- if(ar[i]==f)
- flag=1;
- if(ar[i]==0)
- zero=1;
- }
- if(f==0 || (r==1&&flag==0) )
- return 0*puts("inf");
- if(r==0)
- {
- if(f>l)
- puts("0");
- else if(zero!=1)
- puts("inf");
- else if(flag==1)
- puts("0");
- else
- puts("1");
- return 0;
- }
- if(r==1)
- {
- if(f>l || flag==1)
- puts("0");
- else
- puts("inf");
- return 0;
- }
- int a1;
- if(f<0)
- a1=-f;
- else
- a1=f;
- if(r<0)
- {
- r=-r;
- if(r==1)
- {
- if(f>l || flag==1)
- puts("0");
- else
- puts("inf");
- return 0;
- }
- befR=r;
- befa1=a1;
- cnt=log10((double)l/a1)/log10(befR)+1;
- r*=r;
- int lastTH=cnt;
- fr(i,0,k-1)
- {
- if(ar[i]<0)
- {
- ar[i]=-ar[i];
- a1=(f<0)?befa1:befa1*befR;
- int fakeN=log10((double)ar[i]/a1)/log10(r)+1.0;
- int pod=a1*power(r,fakeN-1);
- int realN=(f<0)?fakeN+(fakeN-1) : fakeN+fakeN;
- if(pod==ar[i] && realN<=lastTH)
- cnt--;
- }
- else if(ar[i]>0)
- {
- a1=(f>0)?befa1:befa1*befR;
- int fakeN=log10((double)ar[i]/a1)/log10(r)+1.0;
- int pod=a1*power(r,fakeN-1);
- int realN=(f>0)?fakeN+(fakeN-1) : fakeN+fakeN;
- if(pod==ar[i] && realN<=lastTH)
- cnt--;
- }
- }
- }
- else
- {
- cnt=log10((double)l/a1)/log10(r)+1.0;
- int lastTH=cnt;
- fr(i,0,k-1)
- {
- double nth;
- if(f<0 && ar[i]<0)
- {
- ar[i]=-ar[i];
- nth=log10((double)ar[i]/a1)/log10(r)+1.0;
- n=nth;
- int pod=a1*power(r,n-1);
- if(pod==ar[i] && n<=lastTH)
- cnt--;
- }
- else if(f>0 && ar[i]>0)
- {
- nth=log10((double)ar[i]/a1)/log10(r)+1.0;
- n=nth;
- int pod=a1*power(r,n-1);
- if(pod==ar[i] && n<=lastTH)
- cnt--;
- }
- }
- }
- cout<<cnt<<'\n';
- return 0;
- }
- /*
- 2 -2 35 5
- 2 -4 8 -16 32
- -3 -2 49 5
- -3 6 -12 24 -48
- 2 -2 35 5
- 2 -4 8 -10 32
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement