【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; }