Advertisement
Guest User

Untitled

a guest
Mar 31st, 2020
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.28 KB | None | 0 0
  1. #include <fstream>
  2. #include <bitset>
  3. using namespace std;
  4. ifstream fin("num_sum_div.in");
  5. ofstream fout("num_sum_div.out");
  6. long long xlan(long long x, long long n)
  7. {
  8. if(n==0) return 1;
  9. else
  10. {
  11. long long p=xlan(x,n/2);
  12. if(n%2==0) return p*p;
  13. else return p*p*x;
  14. }
  15. }
  16. long long x;
  17. bitset <100001> E;
  18. long long n,d,p,a,P[10000],np,q=80000;
  19. long long sumdiv(long long n)
  20. {
  21. long long d=1,s=1;
  22. while(n>1)
  23. {
  24. if(n%P[d]==0)
  25. {
  26. int e=0;
  27. while(n%P[d]==0)
  28. {
  29. e++;
  30. n=n/P[d];
  31. }
  32. s=s*(xlan(P[d],e+1)-1)/(P[d]-1);
  33. }
  34. d++;
  35. if(P[d]*P[d]>n && n>1)
  36. {
  37. s=s*(n*n-1)/(n-1);
  38. n=1;
  39. }
  40. }
  41. return s;
  42. }
  43. int main()
  44. {
  45. //fout<<xlan(3,10)<<endl;
  46. for(int i=2;i<=q;i++) E[i]=1;
  47. for(int i=2;i*i<=q;i++)
  48. if(E[i])
  49. for(int j=i*i;j<=q;j=j+i) E[j]=0;
  50. for(int i=2;i<=q;i++) if(E[i]) P[++np]=i;
  51. fin>>n;
  52. for(int i=1;i<=n;i++)
  53. {
  54. fin>>x;
  55. //fout<<sumdiv(x)<<" "<<2*x<<endl;
  56. if(sumdiv(x)==2*x) p++;
  57. else if(sumdiv(x)<2*x) d++;
  58. else a++;
  59. }
  60. fout<<d<<" "<<p<<" "<<a;
  61. return 0;
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement