MinhNGUYEN2k4

pf

Mar 30th, 2021 (edited)
239
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.66 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define sz(x) int(x.size())
  3. #define all(x) x.begin(),x.end()
  4. #define reset(x) memset(x, 0,sizeof(x))
  5. #define pb push_back
  6. #define mp make_pair
  7. #define fi first
  8. #define se second
  9. #define N 1000005
  10. #define remain(x) if (x > MOD) x -= MOD
  11. #define ii pair<int, int>
  12. #define iiii pair< ii , ii >
  13. #define viiii vector< iiii >
  14. #define vi vector<int>
  15. #define vii vector< ii >
  16. #define bit(x, i) (((x) >> (i)) & 1)
  17. #define Task "perfect"
  18. #define int long long
  19.  
  20. using namespace std;
  21.  
  22. typedef long double ld;
  23. const int inf = 1e10;
  24. const int minf = -1e10;
  25.  
  26. int n, m;
  27. vector<int> perfect;
  28. int sG[N];
  29.  
  30. void readfile()
  31. {
  32.     ios_base::sync_with_stdio(false);
  33.     cin.tie(0);cout.tie(0);
  34.     if (fopen(Task".inp","r"))
  35.     {
  36.         freopen(Task".inp","r",stdin);
  37.         freopen(Task".out","w",stdout);
  38.     }
  39.     cin >> m;
  40. }
  41.  
  42. void preproc()
  43. {
  44.     memset(sG, 0, sizeof sG);
  45.     perfect.clear();
  46.     for(int i=1; i<=1e6; i++)
  47.     {
  48.         if (sG[i]==i) perfect.push_back(i);
  49.         for(int j=i+i; j<=1e6; j+=i) sG[j] += i;
  50.     }
  51. }
  52.  
  53. int bs(int l, int r, int val)
  54. {
  55.     int mid;
  56.     while (r - l > 1)
  57.     {
  58.         mid = (r+l)/2;
  59.         if (perfect[mid] <= val){
  60.             l = mid;
  61.         }
  62.         else{
  63.             r = mid-1;
  64.         }
  65.     }
  66.     if (perfect[r] <= val) return perfect[r];
  67.     return perfect[l];
  68. }
  69.  
  70. void proc()
  71. {
  72.     while (m--)
  73.     {
  74.         cin >> n;
  75.         int pos = upper_bound(perfect.begin(),perfect.end(),n)-perfect.begin()-1;
  76.         cout << perfect[pos] << endl;
  77.         // cout << bs(0,3,n) << endl;
  78.     }
  79. }
  80.  
  81. signed main()
  82. {
  83.     readfile();
  84.     preproc();
  85.     proc();
  86.     return 0;
  87. }
  88.  
Add Comment
Please, Sign In to add comment