zoukankan      html  css  js  c++  java
  • bzoj 2257: [Jsoi2009]瓶子和燃料

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<algorithm>
     4 #include<cmath>
     5 using namespace std;
     6 int a[1009],n,K,b[10000009],cnt;
     7 bool cmp(int a1,int a2)
     8 {
     9     return a1>a2;
    10 }
    11 int main()
    12 {
    13     scanf("%d%d",&n,&K);
    14     for(int i=1;i<=n;i++)
    15       {
    16         int a2;
    17         scanf("%d",&a2);
    18         int a1=sqrt(a2);
    19         for(int j=1;j<=a1;j++)
    20           if(a2%j==0)
    21             {
    22                 b[++cnt]=j;
    23                 if(a2/j!=j)
    24                   b[++cnt]=a2/j;
    25             }
    26       }
    27     sort(b+1,b+cnt+1,cmp);
    28     int k=1;
    29     for(int i=2;i<=cnt;i++)
    30       if(b[i]==b[i-1])
    31         k++;
    32       else
    33         {
    34             if(k>=K)
    35               {
    36                 printf("%d
    ",b[i-1]);
    37                 return 0;
    38               }
    39             k=1;
    40         }
    41     return 0;
    42 }

    由题 两个瓶子互相倒的话,倒出来一定是最大公约数,枚举所有数的约数,然后从大到小找到第一个出现次数大于K的就是答案。

  • 相关阅读:
    typora 页内跳转
    shell脚本搭建redis集群
    Html
    python json模块
    jenkins 问题合集
    day05 每日一行
    day04 每次一行
    day03 每日一行
    day02
    day02 每日一行
  • 原文地址:https://www.cnblogs.com/xydddd/p/5300073.html
Copyright © 2011-2022 走看看