zoukankan      html  css  js  c++  java
  • 【Usaco2008 Dec】Patting Heads

    【题目链接】

               点击打开链接

    【算法】

              我们知道,每个编号为a[i]都要被编号是a[i]的约数的牛拍一次头(除了它自己),因此,只需用类似于筛法的方式统计答案,

              即可

    【代码】

              

    #include<bits/stdc++.h>
    using namespace std;
    #define MAXN 100010
    #define MAXNUM 1000010
    
    int i,j,n;
    int a[MAXN],cnt[MAXNUM],sum[MAXNUM];
    
    template <typename T> inline void read(T &x) {
            int f = 1; x = 0;
            char c = getchar();
            for (; !isdigit(c); c = getchar()) { if (c == '-') f = -f; }
            for (; isdigit(c); c = getchar()) x = (x << 3) + (x << 1) + c - '0';
            x *= f;
    }
    template <typename T> inline void write(T x) {
        if (x < 0) { putchar('-'); x = -x; }
        if (x > 9) write(x/10);
        putchar(x%10+'0');
    }
    template <typename T> inline void writeln(T x) {
        write(x);
        puts("");
    }
    
    int main() {
            
            read(n);
            for (i = 1; i <= n; i++) {
                    read(a[i]);
                    cnt[a[i]]++;
            }
            for (i = 1; i <= MAXNUM; i++) {
                    if (cnt[i]) {
                            for (j = 1; i * j <= MAXNUM; j++) {
                                    sum[i*j] += cnt[i];
                            }                
                    }
            }
            for (i = 1; i <= n; i++) writeln(sum[a[i]]-1);
            
            return 0;
         
    }
  • 相关阅读:
    10.异常
    9.1 oop习题集合
    9.抽象类和接口
    8.oop-多态
    AngularJs学习笔记二
    浅谈如何坚持计划
    妙味课堂——JavaScript基础课程笔记
    前端学习-试卷
    jquery实战
    boost any
  • 原文地址:https://www.cnblogs.com/evenbao/p/9196356.html
Copyright © 2011-2022 走看看