zoukankan      html  css  js  c++  java
  • P3518 [POI2011]SEJ-Strongbox

     链接 https://www.luogu.com.cn/problem/P3518

    题解:

    玄学

    显然 gcd(x,n)是答案,

    考虑如果一个数y是答案 ,那么2y 3y 4y是答案

    然后考虑所有答案的GCD  下同

    发现如果最小的答案是y,那么所有答案就是2y 3y 4y,因为最小的GCD也是答案,即这时候y就是最小的GCD

    未完待续 

    #include<iostream>
    #include<cstring>
    #include<algorithm>
    #include<cstdio>
    #include<cmath>
    #include<queue>
    #include<vector>
    #include<climits>
    #include<string>
    #include<cstdlib>
    #include<ctime>
    using namespace std;
    long long a[500000],q[1000005],f[1000005],i,j,ans;
    long long tot,n,k;
    long long gcd(long long a,long long b)
    {
        return b? gcd(b,a%b):a;
    } 
    int main()
    {
        scanf("%lld%lld",&n,&k);
        for(i=1;i<=k;i++)
         scanf("%lld",&a[i]);
        a[k]=gcd(a[k],n);
        for(i=1;i<k;i++)
         a[i]=gcd(a[i],a[k]);
        for(i=1;i*i<=a[k];i++)
         if(a[k]%i==0)
          {
              q[++tot]=i;
              if(i*i!=a[k]) q[++tot]=a[k]/i;
          } 
        sort(q+1,q+tot+1);
        for(i=1;i<k;i++)
         f[lower_bound(q+1,q+tot+1,a[i])-q]=1;
        for(i=1;i<=tot;i++)
         if(f[i])
          for(j=1;j<i;j++)
           if(q[i]%q[j]==0)
            f[j]=1;
        for(ans=1;f[ans];ans++);
         printf("%lld
    ",n/q[ans]);
        return 0;
    }
  • 相关阅读:
    word查找与替换
    细说ASP.NET Windows身份认证
    防钓鱼代码
    sql触发器
    url地址栏参数
    sql递归查询
    认识TWICImage类
    尝试发个贴
    泛型单元
    [学习官方例子]TArray
  • 原文地址:https://www.cnblogs.com/acmLLF/p/13650442.html
Copyright © 2011-2022 走看看