码迷,mamicode.com
首页 > 其他好文 > 详细

BZOJ1607 [Usaco2008 Dec]Patting Heads 轻拍牛头

时间:2015-08-06 12:56:52      阅读:845      评论:0      收藏:0      [点我收藏+]

标签:

题目描述有问题,应该对于是每个纸条上的数,有多少个别的纸条上的数是他的约数。

筛法。

记录下每个数出现的次数,然后这个数推后面是他倍数的数。。

 1 #include <cstdio>
 2 #define max(a,b) a>b?a:b
 3 const int maxn = 1000005;
 4 
 5 int cnt[maxn],ans[maxn],a[maxn];
 6 int main()
 7 {
 8     int n;scanf("%d",&n);
 9     int mmax = 0;
10     for(int i = 1;i<=n;++i){
11         scanf("%d",&a[i]);
12         cnt[a[i]]++;
13         mmax = max(mmax,a[i]);
14     }
15     for(int i = 1;i<=mmax;++i)if(cnt[i])
16         for(int j = 1;j*i<=mmax;++j)
17             ans[i*j]+=cnt[i];
18     for(int i = 1;i<=n;++i)
19         printf("%d\n",ans[a[i]]-1);
20     return 0;
21 }

 

BZOJ1607 [Usaco2008 Dec]Patting Heads 轻拍牛头

标签:

原文地址:http://www.cnblogs.com/GJKACAC/p/4707345.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!