首页 > 代码库 > 【BZOJ】1607: [Usaco2008 Dec]Patting Heads 轻拍牛头

【BZOJ】1607: [Usaco2008 Dec]Patting Heads 轻拍牛头

【算法】模拟

技术分享
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=100010,maxm=1000010;
int a[maxn],A[maxm],n;
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&a[i]);
        A[a[i]]++;
    }
    for(int i=1;i<=n;i++)
    {
        int ans=0;
        for(int j=1;j*j<=a[i];j++)if(a[i]%j==0)
        {
            int k=a[i]/j;
//            printf("j=%d k=%d\n",j,k);
            ans+=A[j];
            if(j!=k)ans+=A[k];
        }
        printf("%d\n",ans-1);
    }
    return 0;
}
View Code

 

【BZOJ】1607: [Usaco2008 Dec]Patting Heads 轻拍牛头