zoukankan      html  css  js  c++  java
  • B. Levko and Permutation 简单构造

    B. Levko and Permutation
    time limit per test
    1 second
    memory limit per test
    256 megabytes
    input
    standard input
    output
    standard output

    Levko loves permutations very much. A permutation of length n is a sequence of distinct positive integers, each is at most n.

    Let’s assume that value gcd(a, b) shows the greatest common divisor of numbers a and b. Levko assumes that element pi of permutation p1, p2, ... , pn is good if gcd(i, pi) > 1. Levko considers a permutation beautiful, if it has exactly k good elements. Unfortunately, he doesn’t know any beautiful permutation. Your task is to help him to find at least one of them.

    Input

    The single line contains two integers n and k (1 ≤ n ≤ 1050 ≤ k ≤ n).

    Output

    In a single line print either any beautiful permutation or -1, if such permutation doesn’t exist.

    If there are multiple suitable permutations, you are allowed to print any of them.

    Sample test(s)
    input
    4 2
    output
    2 4 3 1
    input
    1 1
    output
    -1
    Note

    In the first sample elements 4 and 3 are good because gcd(2, 4) = 2 > 1 and gcd(3, 3) = 3 > 1. Elements 2 and 1 are not good because gcd(1, 2) = 1 and gcd(4, 1) = 1. As there are exactly 2 good elements, the permutation is beautiful.

    The second sample has no beautiful permutations.

    const int INF = 1000000000;
    const double eps = 1e-8;
    const int maxn = 300000;
    int ans[maxn];
    int main() 
    {
        //freopen("in.txt","r",stdin);
        int n,k;
        while(cin>>n>>k)
        {
            if(k > n - 1)
            {
                cout<<-1<<endl;
                continue;
            }
            repf(i,1,n)
                ans[i] = i;
            int Max = n - 1;
            int temp = Max - k;
            
            int t = temp/2;
            int e;
            for(int i = n;i>=2;i-=2)
            {
                if(t)
                {
                    swap(ans[i],ans[i-1]);
                    t--;
                }else
                {
                   e = i; 
                }
            }
            if(temp%2)
            {
                swap(ans[1],ans[e]);
            }
            
            printf("%d",ans[1]);
            repf(i,2,n)
                printf(" %d",ans[i]);
            cout<<endl;
        }
        return 0;
    }
  • 相关阅读:
    SVN——Jenkins自动发布
    IIS之虚拟目录学习
    SVN迁移
    通过配置host,自定义域名让本地访问
    比较两个时间的大小 举例:CompareDate("12:00","11:15")
    [转]SQL Server 批量完整备份
    js前台编码,asp.net后台解码 防止前台传值到后台为乱码
    前端将图片二进制流显示在html端
    【转】解析<button>和<input type="button"> 的区别
    利用bat批处理——实现数据库的自动备份和删除
  • 原文地址:https://www.cnblogs.com/DreamHighWithMe/p/3427989.html
Copyright © 2011-2022 走看看