Spyder_ab

Co prime Array

Jun 14th, 2021
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.64 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define lp(var,start,end) for (ll var = start; var <end ; ++var)
  4. #define rlp(var,start,end) for(ll var = start; var>=end ; var--)
  5. #define ios ios_base::sync_with_stdio(false);cin.tie(NULL)
  6. #define ll long long int
  7. #define ld long double
  8. #define fi first
  9. #define se second
  10. #define mp make_pair
  11. #define pb push_back
  12. #define ull unsigned long long int
  13. #define vll vector<ll>
  14. #define vld vector<ld>
  15. #define pll pair<ll,ll>
  16. #define pld pair<ld,ld>
  17. #define vpll vector<pll>
  18. #define vpld vector<pld>
  19. #define all(X) X.begin(),X.end()
  20. #define mo 1000000007
  21. ll lo[100005]; vector<ll> prime[100005]; vector<ll> pos[100005]; int cur[100005];
  22.  
  23. void solve()
  24. {
  25. int n ; cin>>n;
  26. int a[n];
  27. lp(i,0,n)
  28. cin>>a[i];
  29. lo[0]=0; lo[1]=1;
  30. for(ll i =2; i<100005; i++)
  31. {
  32. if(lo[i])
  33. continue;
  34. lo[i]=i;
  35. for(ll j = i*i; j<100005; j+=i)
  36. {
  37. if(lo[j]==0)
  38. lo[j]=i;
  39. }
  40. }
  41.  
  42. for(int i = 0 ; i<n ; i++)
  43. {
  44. ll temp = a[i];
  45. while(temp>1)
  46. {
  47. ll curl = lo[temp];
  48. pos[curl].pb(i);
  49. prime[i].pb(curl);
  50.  
  51. while(temp%curl==0)
  52. temp/=curl;
  53. }
  54. }
  55. for(int i =0; i<100005;i++)
  56. cur[i]= pos[i].size();
  57. ll ans = 0 ; ll temp = n ;
  58. for(int i =n-1; i>=0; i--)
  59. {
  60. for(int j =0 ; j<prime[i].size(); j++)
  61. {
  62. int p = prime[i][j];
  63. if(cur[p]==pos[p].size())
  64. {
  65. cur[p]--;
  66. continue;
  67. }
  68. temp = min(temp,pos[p][cur[p]]);
  69. cur[p]--;
  70. }
  71. ans+=(temp-i);
  72. }
  73. cout<<ans<<endl;
  74.  
  75. }
  76.  
  77.  
  78. int main()
  79. { ios;
  80. ll t;t =1 ;
  81. while(t--)
  82. {
  83. solve();
  84.  
  85. }
  86. return(0);
  87. }
  88.  
Advertisement
Add Comment
Please, Sign In to add comment