zoukankan      html  css  js  c++  java
  • Codeforces Round #632 (Div. 2) F. Kate and imperfection 埃筛 gcd

    https://codeforces.com/contest/1333/problem/F

    给定一个有n个数的集合S={1,2,3,...,n}.

    集合MS,M中的数两两组合,最大的gcd(a,b),被定义为不完美的值 Im

    现在有一个 k{2,,n},在S里面找到 k 个数,使得 I最小,求 I2,I3, ...,In

    人话:也就是找出 {1,2,3,...,n} 里面的k个数,使得两两之间的gcd的最大值最小,k=2,,3, ..., n ;

    思路:gcd的最大值要最小,质数的gcd都为1,肯定是最小的,那么当k小于等于 [1,n]中质数的个数时,Ik=1,然后把非质数的最大约数的最小值依次选入集合中,那么这个数的最大约数就是这个集合的最大gcd。

    #include <bits/stdc++.h>
    using namespace std;
    const int MAXN=5e5+5;
    const int mod=1e9+7;
    typedef long long ll;
    //typedef __int128 LL;
    const int inf=0x3f3f3f3f;
    const long long INF=0x3f3f3f3f3f3f3f3f;
    
    int a[MAXN];//记录每个数的最大约数,质数为1
    int main()
    {
        int n;
        scanf("%d",&n);
        for(int i=1;i<=n;i++)a[i]=1;
        for(int i=2;i<=n;i++)
        {
            for(int j=i+i;j<=n;j+=i)
            {
                a[j]=i;
            }
        }
        sort(a+2,a+1+n);
        for(int i=2;i<=n;i++)printf("%d%c",a[i],i==n?'
    ':' ');
        return 0;
    }
    View Code
  • 相关阅读:
    margin、padding单位百分比
    Javascript CustomEvent
    javascript 复制数组
    gulp 小坑一个
    Gulp livereload
    node入门笔记
    jQuery操作input改变value属性值
    阅读笔记-A Message To Garcia
    读书笔记-忆见未来
    js this pointer 指针
  • 原文地址:https://www.cnblogs.com/MZRONG/p/12670867.html
Copyright © 2011-2022 走看看