2 条题解

  • 0
    @ 2025-10-8 16:58:21
    #include <bits/stdc++.h>
    using namespace std;
    const int N=1e6+10;
    int ans[N], s[N], a[N];
    bool v[N];
    int main()
    {
        int n;scanf("%d", &n);
        memset(s, 0, sizeof(s));
        for(int i=1;i<=n;i++)scanf("%d", &a[i]), s[a[i]]++;
        memset(v, 0, sizeof(v));
        for(int i=1;i<=n;i++)
        {
            if(v[a[i]])continue;
            ans[a[i]] += s[a[i]] - 1;
            for(int j=a[i]*2;j<=1000000;j+=a[i])
            {
                ans[j] += s[a[i]];
            }
            v[a[i]] = true;
        }
        for(int i=1;i<=n;i++)printf("%d\n", ans[a[i]]);
        return 0;
    }
    
    • 0
      @ 2025-10-8 16:58:13
      #include<bits/stdc++.h>
      using namespace std;
      const int N=1e6+10;
      int ans[N],s[N],a[N];
      bool v[N];
      int main()
      {
          int n;scanf("%d",&n);
          memset(s,0,sizeof(s));
          for(int i=1;i<=n;i++)scanf("%d",&a[i]),s[a[i]]++;
          memset(v,0,sizeof(v));
          for(int i=1;i<=n;i++)
          {
              if(v[a[i]])continue;
              ans[a[i]]+=s[a[i]]-1;
              for(int j=a[i]*2;j<=1000000;j+=a[i])
              {
                  ans[j]+=s[a[i]];
              }
              v[a[i]]=True;
          }
          for(int i=1;i<=n;i++)printf("%d\n",ans[a[i]]);
          return 0;
      }
      • 1

      【思维】 $A_i$ 是数列中多少个数的倍数 [USACO08DEC] Patting Heads S

      信息

      ID
      1762
      时间
      500ms
      内存
      128MiB
      难度
      8
      标签
      递交数
      11
      已通过
      8
      上传者