zoukankan      html  css  js  c++  java
  • 1333F.Kate and Imperfection(数学)

    在集合 S={1,2,⋯,n}S=1,2,⋯,n 中,对于每个正整数 kk ,找出一个大小为 kk 的子集,使得该子集中两两间最大公因数的最大值最小,求这个最小值。

    题解:

    开一个映射数组,初始化1-N+1的映射都是1,然后从2开始,把1-N范围内每个因数是i的映射改为i,这样遍历一遍可以保证每个数的映射存的是最大公因数。然后对映射排序,从小到大输出映射的值。

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=5e5+100;
    int a[maxn];
    int N,M;
    int main () {
        scanf("%d",&N);
        for (int i=1;i<=N+1;i++)
            a[i]=1;
        for (int i=2;i<=N;i++) {
            for (int j=2*i;j<=N;j+=i) 
                a[j]=i;
        }
        sort(a+1,a+1+N);
        for (int i=2;i<=N;i++) 
            printf("%d%s",a[i],i==N?"
    ":" ");
        return 0;
    }
  • 相关阅读:
    (转)IDEA ERROR:找不到或无法加载主类
    Piggy-Bank
    Monkey and Banana
    Max Sum Plus Plus
    Doing Homework
    繁繁的游戏
    看试卷
    繁繁的队列
    大整数乘法
    文件操作(c++)
  • 原文地址:https://www.cnblogs.com/zhanglichen/p/12687383.html
Copyright © 2011-2022 走看看