zoukankan      html  css  js  c++  java
  • 轻拍牛头(信息学奥赛一本通 1621)

    【题目描述】

    原题来自:USACO 2008 Dec. Silver

    今天是贝茜的生日,为了庆祝自己的生日,贝茜邀你来玩一个游戏。

    贝茜让 N 头奶牛坐成一个圈。除了 1 号与 N 号奶牛外,i 号奶牛与 i−1 号和 i+1 号奶牛相邻,N 号奶牛与 1 号奶牛相邻。农夫约翰用很多纸条装满了一个桶,每一张包含了一个 1 到 106 的数字。

    接着每一头奶牛 i 从桶中取出一张纸条 Ai ,每头奶牛轮流走一圈,同时拍打所有「编号是 Ai 的约数」的牛,然后走回到原来的位置。牛们希望你帮助他们确定,每一头奶牛需要拍打的牛。

    【输入】

    第一行包含一个整数 N;

    接下来第二到第 N+1 行每行包含一个整数 Ai 。

    【输出】

    第一到第 N 行,第 i 行的输出表示第 i 头奶牛要拍打的牛数量。

    【输入样例】

    5
    2
    1
    2
    3
    4

    【输出样例】

    2
    0
    2
    1
    3

    【提示】

    数据范围与提示:

    对于全部数据,1N105 。


     --->上面的题目粘贴过来后莫名有点奇怪(不知是哪里出了问题)

    事实上这道题放在“质数”里面好像没什么道理,最多就是用到了一点类似于埃拉托色尼筛法的思想

    放上代码:

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 const int N=1e5+1;
     4 int a[N],n,Max,ans[N*100],cnt[N*100];
     5 inline int read()
     6 {
     7     int x=0,f=1;
     8     char ch=getchar();
     9     while(ch<'0'||ch>'9')
    10     {
    11         if(ch=='-') f=-1;
    12         ch=getchar();
    13     }
    14     while(ch>='0'&&ch<='9')
    15     {
    16         x=x*10+ch-'0';
    17         ch=getchar();
    18     }
    19     return x*f;
    20 }
    21 inline void write(int x)
    22 {
    23     if(x<0)
    24     {
    25         putchar('-');
    26         x=-x;
    27     }
    28     if(x>9) write(x/10);
    29     putchar(x%10+'0');
    30 }
    31 int main()
    32 {
    33     n=read();
    34     for(int i=1;i<=n;i++)
    35     {
    36         a[i]=read();
    37         cnt[a[i]]++;
    38         Max=max(Max,a[i]);
    39     }
    40     for(int i=1;i<=Max;i++)
    41     {
    42         if(cnt[i])
    43         {
    44             for(int j=i;j<=Max;j+=i)
    45             ans[j]+=cnt[i];
    46         }
    47     }
    48     for(int i=1;i<=n;i++)
    49     {
    50         write(ans[a[i]]-1);
    51         putchar('
    ');
    52     }
    53     return 0;
    54 }
  • 相关阅读:
    代码守恒定律
    第一个Dockerfile
    服务器项目白名单设置
    TOMCAT禁用不安全请求方式
    标准单例模式
    二进制,八进制,十进制,十六进制!!!!
    JAVA按层级遍历二叉树
    String的+
    安装 Rational Rose 启动报错:无法启动此程序,因为计算机中丢失 suite objects.dll
    java中文乱码问题
  • 原文地址:https://www.cnblogs.com/ljy-endl/p/11377990.html
Copyright © 2011-2022 走看看