zoukankan      html  css  js  c++  java
  • codeforces476D

    Dreamoon and Sets

     CodeForces - 476D 

    Dreamoon likes to play with sets, integers and  is defined as the largest positive integer that divides both a and b.

    Let S be a set of exactly four distinct integers greater than 0. Define S to be of rank k if and only if for all pairs of distinct elements sisj from S.

    Given k and n, Dreamoon wants to make up n sets of rank k using integers from 1 to msuch that no integer is used in two different sets (of course you can leave some integers without use). Calculate the minimum m that makes it possible and print one possible solution.

    Input

    The single line of the input contains two space separated integers nk (1 ≤ n ≤ 10 000, 1 ≤ k ≤ 100).

    Output

    On the first line print a single integer — the minimal possible m.

    On each of the next n lines print four space separated integers representing the i-th set.

    Neither the order of the sets nor the order of integers within a set is important. If there are multiple possible solutions with minimal m, print any one of them.

    Examples

    Input
    1 1
    Output
    5
    1 2 3 5
    Input
    2 2
    Output
    22
    2 4 6 22
    14 18 10 16

    Note

    For the first example it's easy to see that set {1, 2, 3, 4} isn't a valid set of rank 1 since .

    sol:构造出来的肯定是四个互质的数字*K,对于这四个互质的数字要尽量小,容易构造出这样四个

    1 2 3 5

    7 8 9 11   (每次加6)

    没有比上面更小的了

    /*
    输出n组集合,每组4个。对于任意一组中的4个元素,一组内任意2个数的gcd==k
    且n组的所有数字各不相同。要使得n组中最大的数字最小。
    */
    #include <bits/stdc++.h>
    using namespace std;
    typedef int ll;
    inline ll read()
    {
        ll s=0;
        bool f=0;
        char ch=' ';
        while(!isdigit(ch))
        {
            f|=(ch=='-'); ch=getchar();
        }
        while(isdigit(ch))
        {
            s=(s<<3)+(s<<1)+(ch^48); ch=getchar();
        }
        return (f)?(-s):(s);
    }
    #define R(x) x=read()
    inline void write(ll x)
    {
        if(x<0)
        {
            putchar('-'); x=-x;
        }
        if(x<10)
        {
            putchar(x+'0'); return;
        }
        write(x/10);
        putchar((x%10)+'0');
        return;
    }
    #define W(x) write(x),putchar(' ')
    #define Wl(x) write(x),putchar('
    ')
    int n,K;
    int main()
    {
        int i;
        R(n); R(K);
        Wl((5+(n-1)*6)*K);
        for(i=1;i<=n;i++)
        {
            int oo=((i-1)*6)*K;
            W(K+oo); W(2*K+oo); W(3*K+oo); Wl(5*K+oo);
        }
        return 0;
    }
    /*
    Input
    1 1
    Output
    5
    1 2 3 5
    
    Input
    2 2
    Output
    22
    2 4 6 22
    14 18 10 16
    */
    View Code
  • 相关阅读:
    ASP.NET Core 3.0 WebApi中使用Swagger生成API文档简介
    $.ajax
    C#使用RabbitMQ
    WebAPI+NLog实现接口调用日志输出
    Spire.Doc组件读取与写入Word
    .net中RabbitMQ生产者/消费者
    第2课
    第1课
    详解usbmon抓取的log各字段的含义
    使用 usbmon 抓取 usb 总线上的数据
  • 原文地址:https://www.cnblogs.com/gaojunonly1/p/10771417.html
Copyright © 2011-2022 走看看