fork download
  1. #include <bits/stdc++.h>
  2. //#define int long long
  3. #define fast ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
  4. #define lg2(n) (63-__builtin_clzll(n))
  5. #define mask(n) (1LL << (n))
  6. #define TASK ""
  7. #define openfile(); if( fopen(TASK".inp", "r")){freopen(TASK".inp", "r", stdin);freopen(TASK".out", "w", stdout);}
  8. #define lc(n) (n << 1)
  9. #define rc(n) ((n << 1) | 1)
  10.  
  11. #define fi first
  12. #define se second
  13. #define FOR(i, l, r, k) for( int i = l; i <= r; i += k)
  14. #define FOD(i, r, l, k) for( int i = r; i >= l; i -= k)
  15.  
  16. #define mii map<int,int>
  17. #define umi unordered_map<int, int>
  18. #define pii pair<int,int>
  19. #define vi vector<int>
  20.  
  21. using namespace std;
  22.  
  23. //const int oo = 1e18;
  24. const int mod = 1e9 + 7;
  25. const int nmax = 2e5 + 8;
  26. const int base = 311;
  27. const int N = 1e6 + 8;
  28.  
  29.  
  30. int n, a[nmax], d[N];
  31. bitset<N> p;
  32.  
  33. void sieve(){
  34. p[1] = 1;
  35. for(int i = 2; i * i < N; ++i){
  36. if(!p[i]){
  37. for(int j = i * i; j < N; j += i){
  38. p[j] = 1;
  39. }
  40. }
  41. }
  42. }
  43. int calc(int n){
  44. int cnt = 0;
  45. // int res = n;
  46. for(int i = 1; i * i <= n; ++i){
  47. if(n % i == 0){
  48. if(!p[n / i]) cnt += d[i];
  49. if(!p[i] && i * i != n) cnt += d[n / i];
  50. }
  51. }
  52. return cnt;
  53. }
  54.  
  55. main(){
  56. fast;
  57. openfile();
  58. sieve();
  59. cin >> n;
  60. for(int i = 1; i <= n; ++i){
  61. cin >> a[i];
  62. d[a[i]]++;
  63. }
  64. int ans = 0;
  65. for(int i = 1; i <= n; ++i){
  66. ans += calc(a[i]);
  67. // cout << a[i] << ' ' << calc(a[i]) << endl;
  68. }
  69. cout << ans;
  70. }
  71.  
Success #stdin #stdout 0.01s 5320KB
stdin
Standard input is empty
stdout
Standard output is empty