zoukankan      html  css  js  c++  java
  • [Codeforces 1011E] Border

    [题目链接]

            https://codeforces.com/contest/1011/problem/E

    [算法]

             裴蜀定理 : 设a_1, cdots a_n为n个整数,d是它们的最大公约数,那么存在整数x_1, cdots x_n 使得 x_1cdot a_1 + cdots x_ncdot a_n = d

             显然 , 我们只需求出a1,a2...an模k意义下的最大公约数G,然后枚举G的倍数即可

             时间复杂度 : O(NlogK)

    [代码]

            

    #include<bits/stdc++.h>
    using namespace std;
    #define MAXN 200010
    
    int n , k;
    int a[MAXN];
    
    template <typename T> inline void chkmax(T &x,T y) { x = max(x,y); }
    template <typename T> inline void chkmin(T &x,T y) { x = min(x,y); }
    template <typename T> inline void read(T &x)
    {
        T 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;
    }
    inline int gcd(int x,int y)
    {
            if (y == 0) return x;
            else return gcd(y,x % y);
    }
    
    int main()
    {
            
            read(n); read(k); 
            for (int i = 1; i <= n; i++) 
            {
                    read(a[i]);
                    a[i] %= k;
                    if (a[i] == 0) a[i] = k;
            }
            int g = a[1];
            for (int i = 2; i <= n; i++) g = gcd(g,a[i]);
            set< int > ans;
            int now = 0;
            for (int i = 0; i < k; i++) 
            {
                    ans.insert(now);
                    now = (now + g) % k;
            }
            printf("%d
    ",(int)ans.size());
            for (set< int > :: iterator it = ans.begin(); it != ans.end(); it++) printf("%d ",*it);
            printf("
    ");
            
            return 0;
        
    }
  • 相关阅读:
    无题
    无题
    Windows NT 和 VMS: 其余的故事 (The Rest of the Story)
    Lachesis Shield Released!
    最近几年来看到的最强的照片
    有关 Nintendo GameCube
    那些带给我欢乐的游戏
    习惯了 .#
    Rootkits
    我写的IDA插件发布了
  • 原文地址:https://www.cnblogs.com/evenbao/p/9746763.html
Copyright © 2011-2022 走看看