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

    Description

      今天是贝茜的生日,为了庆祝自己的生日,贝茜邀你来玩一个游戏.
        贝茜让N(1≤N≤100000)头奶牛坐成一个圈.除了1号与N号奶牛外,i号奶牛与i-l号和i+l号奶牛相邻.N号奶牛与1号奶牛相邻.农夫约翰用很多纸条装满了一个桶,每一张包含了一个独一无二的1到1,000,000的数字.
        接着每一头奶牛i从柄中取出一张纸条Ai.每头奶牛轮流走上一圈,同时拍打所有编号能整除在纸条上的数字的牛的头,然后做回到原来的位置.牛们希望你帮助他们确定,每一头奶牛需要拍打的牛.

    Input

        第1行包含一个整数N,接下来第2到N+1行每行包含一个整数Ai.

    Output

     
        第1到N行,每行的输出表示第i头奶牛要拍打的牛数量.

    Sample Input

    5 //有五个数,对于任一个数来说,其它的数有多少个是它的约数
    2
    1
    2
    3
    4

    INPUT DETAILS:

    The 5 cows are given the numbers 2, 1, 2, 3, and 4, respectively.

    Sample Output

    2
    0
    2
    1
    3

    OUTPUT DETAILS:

    The first cow pats the second and third cows; the second cows pats no cows;
    etc.

    HINT

     

    Source

     

    题解

    这道题要你求其他的数中有几个是当前这个数的约数

    我们考虑用数组记录下每个数出现的次数

    每次枚举i和j表示i是j的约数,把i这个数出现的次数加到ans[j]中,因为每个数它自己也被算进去了,所以输出的时候要-1

    但是这样还是有可能要T

    所以我们的循环只要循环到读入的数中最大的就可以了

    还有一个就是判断一下i这个数有没有出现过,没有出现过后面枚举的j也就没有用了

     1 #include<bits/stdc++.h>
     2 #define N 100005
     3 #define M 1000005
     4 using namespace std;
     5 int n,Max;
     6 int a[N];
     7 int t[M],num[M];
     8 int main(){
     9     scanf("%d",&n);
    10     for (int i=1;i<=n;i++){
    11         scanf("%d",&a[i]);
    12         t[a[i]]++;
    13         Max=max(Max,a[i]);
    14     } 
    15     for (int i=1;i<=Max;i++)
    16         if (t[i])
    17             for (int j=i;j<=Max;j+=i)
    18                 num[j]+=t[i];
    19     for (int i=1;i<=n;i++)
    20         printf("%d
    ",num[a[i]]-1);
    21     return 0;
    22 }
    View Code
  • 相关阅读:
    专职DBA-MySQL体系结构与基本管理
    JSON
    MIME类型
    文件上传下载
    response常用的方法
    2020.11.27小记
    HTTP请求状态码
    1561. Maximum Number of Coins You Can Get
    1558. Minimum Numbers of Function Calls to Make Target Array
    1557. Minimum Number of Vertices to Reach All Nodes
  • 原文地址:https://www.cnblogs.com/zhuchenrui/p/7624310.html
Copyright © 2011-2022 走看看