Advertisement
a53

bookface

a53
Mar 31st, 2020
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.32 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int MAX_N = 1000001;
  4. int N,nr,K,P[MAX_N][8];
  5. long long FR[MAX_N];
  6. bitset <MAX_N> viz;
  7.  
  8. inline unsigned long long pow(long long x,int pt)
  9. {
  10. unsigned long long rez=1;
  11. for(;pt;pt>>=1)
  12. if(pt&1)
  13. rez*=x;
  14. x*=x;
  15. return rez;
  16. }
  17.  
  18. int main()
  19. {
  20. FR[1]=1;
  21. for(int i=2;i<MAX_N;++i)
  22. {
  23. if(viz[i]==0)
  24. {
  25. P[i][0]=1;
  26. P[i][1]=i;
  27. FR[i]=(1+i+1LL*i*i);
  28. for(int j=i+i;j<MAX_N;j+=i)
  29. {
  30. viz[j]=1;
  31. ++P[j][0];
  32. P[j][P[j][0]]=i;
  33. }
  34. }
  35. }
  36. for(int i=4;i<MAX_N;++i)
  37. {
  38. if(FR[i]==0)
  39. {
  40. int aux=i,p=P[aux][P[aux][0]],j=aux/p;
  41. if(j%p!=0)
  42. FR[i]=FR[j]*(1+p+1ULL*p*p);
  43. else
  44. {
  45. int k=0;
  46. unsigned long long p1=1;
  47. while(aux%p==0)
  48. ++k,p1*=p,aux/=p;
  49. unsigned long long p2=1ULL*(pow(p,2*k+1)-1)/(p-1);
  50. FR[i]=FR[i/p1]*p2*1ULL;
  51. }
  52. }
  53. }
  54. ifstream f("bookface.in");
  55. f>>N;
  56. ofstream g("bookface.out");
  57. for(int i=1;i<=N;++i)
  58. f>>nr,g<<FR[nr]<<'\n';
  59. return 0;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement