Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define MAX_N 1000005
- using namespace std;
- int n,c,p,v[50005],nrp,P[MAX_N];
- int nrdivp,nrd,K;
- bitset <MAX_N> viz;
- void ciur()
- {
- for(int i=2;i<MAX_N;++i)
- {
- if(viz[i]==0)
- {
- P[++K]=i;
- for(int j=i+i;j<MAX_N;j+=i)
- viz[j]=1;
- }
- }
- }
- int numardiv(int nr)
- {
- int pr=1;
- int j,al=0;
- while(nr%2==0)
- nr/=2,++al;
- pr*=(al+1);
- for(j=1;j<=K&&1LL*P[j]*P[j]<=nr;++j)
- {
- if(nr%P[j]) continue;
- al = 0;
- while(nr%P[j]==0)
- {
- nr/=P[j];
- ++al;
- }
- pr*=(al+1);
- }
- if(nr>1)
- pr*=2;
- return pr;
- }
- int main()
- {
- ciur();
- ifstream f("divizori4.in");
- f>>n>>c;
- for(int i=1;i<=n;++i)
- f>>v[i];
- f>>p;
- nrp=v[p];
- nrdivp=numardiv(nrp);
- ofstream g("divizori4.out");
- if(c==1)
- {
- g<<nrdivp<<'\n';
- return 0;
- }
- sort(v+1,v+1+n,greater<int>());
- for(int i=1;i<=n;++i)
- {
- nrd=numardiv(v[i]);
- if(nrd==nrdivp)
- g<<v[i]<<' ';
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement