Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #include <bitset>
- using namespace std;
- ifstream fin("num_sum_div.in");
- ofstream fout("num_sum_div.out");
- long long xlan(long long x, long long n)
- {
- if(n==0) return 1;
- else
- {
- long long p=xlan(x,n/2);
- if(n%2==0) return p*p;
- else return p*p*x;
- }
- }
- long long x;
- bitset <100001> E;
- long long n,d,p,a,P[10000],np,q=80000;
- long long sumdiv(long long n)
- {
- long long d=1,s=1;
- while(n>1)
- {
- if(n%P[d]==0)
- {
- int e=0;
- while(n%P[d]==0)
- {
- e++;
- n=n/P[d];
- }
- s=s*(xlan(P[d],e+1)-1)/(P[d]-1);
- }
- d++;
- if(P[d]*P[d]>n && n>1)
- {
- s=s*(n*n-1)/(n-1);
- n=1;
- }
- }
- return s;
- }
- int main()
- {
- //fout<<xlan(3,10)<<endl;
- for(int i=2;i<=q;i++) E[i]=1;
- for(int i=2;i*i<=q;i++)
- if(E[i])
- for(int j=i*i;j<=q;j=j+i) E[j]=0;
- for(int i=2;i<=q;i++) if(E[i]) P[++np]=i;
- fin>>n;
- for(int i=1;i<=n;i++)
- {
- fin>>x;
- //fout<<sumdiv(x)<<" "<<2*x<<endl;
- if(sumdiv(x)==2*x) p++;
- else if(sumdiv(x)<2*x) d++;
- else a++;
- }
- fout<<d<<" "<<p<<" "<<a;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement