Advertisement
Guest User

Untitled

a guest
May 5th, 2015
255
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.42 KB | None | 0 0
  1. #pragma comment(linker, "/STACK:1000000000")
  2. #include <cctype>
  3. #include <iostream>
  4. #include <fstream>
  5. #include <string.h>
  6. #include <algorithm>
  7. #include <vector>
  8. #include <math.h>
  9. #include <time.h>
  10. #include <cmath>
  11. #include <vector>
  12. #include <queue>
  13. #include <deque>
  14. #include <map>
  15. #include <list>
  16. #include <set>
  17. #include <string>
  18. #include <iomanip>
  19. #include <iterator>
  20.  
  21. #define forn(i, n) for (i64 i = 0; i < n; ++i)
  22. #define revn(i, n) for (i64 i = n-1; i>=0; --i)
  23. #define cyc(i, s, n) for (i64 i = s; i <= n; ++i)
  24. #define pb push_back
  25. #define mp(a,b) make_pair(a,b)
  26. #define all(x) x.begin(), x.end()
  27. #define F first
  28. #define S second
  29. #define eps 1e-7
  30. #define inf (1000*1000*1000+9)
  31. #define debug(x) cout << x << endl;
  32.  
  33. using namespace std;
  34. typedef unsigned long long u64;
  35. typedef long long i64;
  36. typedef long double ld;
  37. typedef vector < i64 > vi64;
  38. typedef vector < u64 > vu64;
  39. typedef pair < i64, i64 > pi64;
  40. typedef vector < vi64 > graph;
  41. typedef int huint;
  42. #define huint int
  43. #define N 100
  44.  
  45. vi64 p;
  46. void sieve()
  47. {
  48.     i64 n = 1600000;
  49.     vector<bool> prm(n+1,true);
  50.     cyc(i, 2, n)
  51.         if (prm[i])
  52.             if (i*i<=n)
  53.                 for (i64 j = i*i; j<=n; j+=i)
  54.                     prm[j]=false;
  55.     cyc(i, 2, n)
  56.         if (prm[i])
  57.             p.pb(i);
  58. }
  59.  
  60. i64 f(i64 a)
  61. {
  62.     i64 count1 = 1, count2 = 1, k = 0, i;
  63.     if (a == 1 || a == 2)
  64.         return a;
  65.     while ((a & 1) == 0)
  66.     {
  67.         k++;
  68.         a >>= 1;
  69.     }
  70.     if (a == 1)
  71.         return k + 1;
  72.     else
  73.         count1 = k + 1;
  74.     for(i = 0; i < N && p[i]*p[i] <= a; i++)
  75.     {
  76.         k = 0;
  77.         while(a % p[i] == 0)
  78.         {
  79.             k++;
  80.             a /= p[i];
  81.         }
  82.         count1 *= (k + 1);
  83.     }
  84.     if (a == 1)
  85.         return count1;
  86.     if (i < N)
  87.         return count1 << 1;
  88.    
  89.     for(i = p[N - 1] + 2; i*i <= a; i += 2)
  90.     {
  91.         k = 0;
  92.         while(a % i == 0)
  93.         {
  94.             k++;
  95.             a /= i;
  96.         }
  97.         count2 *= (k + 1);
  98.     }
  99.     if (a > 1)
  100.         count2 <<= 1;
  101.     return count1 * count2;
  102. }
  103.  
  104. int main() {
  105.    
  106.     sieve();
  107.     i64 n;
  108.     cin >> n;
  109.     i64 num = 1586409;
  110.     vi64 ans;
  111.     vi64 nums;
  112.     forn(i, 100000)
  113.     {
  114.        
  115.         i64 t = f(num);
  116.         nums.pb(num);
  117.         ans.pb(t);
  118.         num-=t;
  119.     }
  120.     reverse(all(ans));
  121.     forn(i, n)
  122.     cout << ans[i] << ' ';
  123. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement