zoukankan      html  css  js  c++  java
  • BZOJ1607 [Usaco2008 Dec]Patting Heads 轻拍牛头

    题目大意:n个数中,对其中每一个数,在其它(n-1)个数中有几个是他的因子。

    题解:考虑到数Ai的范围不算太大,可以用一个桶统计1~MAX(Ai)每个数出现个数,然后把1~MAX的在MAX以内的倍数筛一遍即可。100000个数在1000000的桶里非常稀疏,忽略出现次数为0的数对时间效率十分重要。

    这题用了筛法,勉强算数论题吧。。。。。

    代码:

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<algorithm>
     4 #include<cctype>
     5 #include<iostream>
     6 using namespace std;
     7 #define maxx 1000007
     8 #define maxn 233333
     9 #define ll long long
    10 int a[maxn],num[maxx],n,MAX=0;
    11 ll f[maxx];
    12 int qread()
    13 {
    14     char c;int s=0,t=1;
    15     while (!isdigit(c=getchar())) if (c=='-') t=-1;
    16     do {s=s*10+c-'0';} while (isdigit(c=getchar()));
    17     return s*t;
    18 }
    19 int main()
    20 {
    21     n=qread();
    22     memset(num,0,sizeof(num));
    23     for (int i=1;i<=n;i++) a[i]=qread(),num[a[i]]++,MAX=max(a[i],MAX);
    24     for (int i=1;i<=MAX;i++)
    25         if (num[i]) for (int j=i;j<=MAX;j+=i) f[j]+=num[i];
    26     for (int i=1;i<=n;i++) printf("%lld
    ",f[a[i]]-1);
    27     return 0;
    28 }
    View Code
  • 相关阅读:
    Git基本操作二
    Git基本操作一
    Mysql查询一
    接口的token验证
    Laravel模型的一些小技巧
    AOP编程思想实现全局异常处理
    5.4 RegExp类型
    5.4.1 RegExp实例属性
    5.4.2 RegExp实例方法
    5.4.3 RegExp构造函数属性
  • 原文地址:https://www.cnblogs.com/Blue233333/p/6159093.html
Copyright © 2011-2022 走看看