Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #define N 500000
- #include <algorithm>
- using namespace std;
- unsigned int P(unsigned int x) /// Calculez numarul nrd de divizori ai lui x
- {
- unsigned int nrd=1,k=x,p=0;
- while(!(k&1))
- ++p,k>>=1;
- nrd*=p+1;
- for(unsigned int d=3;d*d<=k;d+=2)
- {
- p=0;
- while(k%d==0)
- ++p,k/=d;
- nrd*=p+1;
- }
- if(k>1)
- nrd*=2;
- return nrd;
- }
- int main()
- {
- unsigned int n;
- ifstream f("soft_prime.in");
- unsigned int x,nr=0;
- f>>n;
- unsigned int a[n/2+10];
- while(f>>x&&nr<n/2)
- a[nr++]=x;
- sort(a,a+nr);
- unsigned m=a[nr/2];
- nr=0;
- while(f>>x)
- a[nr++]=x;
- sort(a,a+nr);
- m=(int)((m+a[nr/2])/2);
- f.close();
- nr=0;
- ifstream f1("soft_prime.in");
- f1>>n;
- while(f1>>x)
- {
- if(x<=m)
- if(P(x)==2)
- a[nr++]=x;
- }
- sort(a,a+nr);
- ofstream g("soft_prime.out");
- for(unsigned int i=0;i<nr;++i)
- g<<a[i]<<' ';
- f1.close();
- nr=0;
- ifstream f2("soft_prime.in");
- f2>>n;
- while(f2>>x)
- if(x>m)
- if(P(x)==2)
- a[nr++]=x;
- sort(a,a+nr);
- for(unsigned int i=0;i<nr;++i)
- g<<a[i]<<' ';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement