Advertisement
Guest User

book_face_rasp_gresit_74

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