2 solutions

  • 0
    @ 2024-7-10 14:51:28
    #include<bits/stdc++.h>
    using namespace std;
    const int N=1e6+10;
    int a[N],cnt[N],s[N];
    int main()
    {
       int n;
       cin>>n;
       for(int i=1;i<=n;i++)
       {
          cin>>a[i];
          cnt[a[i]]++;
       }
       for(int i=1;i<N;i++)
       {
          for(int j=1;j<=N/i;j++)
          {
             s[j*i]+=cnt[i];
          }
       }
       for(int i=1;i<=n;i++)
       {
          cout<<s[a[i]]-1<<endl;
       }
       return 0;
    }
    
    • 0
      @ 2024-6-1 15:39:09
      #include<bits/stdc++.h>
      using namespace std;
      const int N=1e6+10;
      int a[N],cnt[N],s[N];
      int main()
      {
          int n;
          cin>>n;
          for(int i=1;i<=n;i++)
          {
              cin>>a[i];
              cnt[a[i]]++; //统计a[i]出现的次数 
          }
          for(int i=1;i<N;i++)
          {
              for(int j=i;j<N;j+=i) //将i出现的次数累加到i的倍数j中 
              {
                  s[j]+=cnt[i];
              }
          }
          for(int i=1;i<=n;i++)
          {
              cout<<s[a[i]]-1<<endl;
          }
          return 0;
      }
      
      • 1

      Information

      ID
      971
      Time
      1000ms
      Memory
      256MiB
      Difficulty
      5
      Tags
      (None)
      # Submissions
      38
      Accepted
      8
      Uploaded By