zoukankan      html  css  js  c++  java
  • Codeforces Round #628 (Div. 2)

    Codeforces Round #628 (Div. 2)

    A. EhAb AnD gCd

    Description

    给定一正整数 (x),求正整数(a,b),使得 (gcd(a,b) + lcm(a,b) = x)

    Solution

    (a = 1) 即可。

    #include<bits/stdc++.h>
    int main(){
        int t;
        scanf("%d",&t);
        while(t--){
            int n;scanf("%d",&n);
            printf("1 %d
    ",n-1);
        }
        return 0;
    }
    

    B. CopyCopyCopyCopyCopy

    Description

    给定一个数组,求由这个数组复制 [公式] 次产生的数组的最大上升(严格)子序列长度。

    Solution

    只需在第一次复制中选择最小的,在第二次复制中选择次小的,以此类推即可。

    故答案即为数组中不同元素个数,使用 std::unique 获得。

    #include<bits/stdc++.h>
    int main()
    {
        int t;
        scanf("%d",&t);
        while(t--)
        {
            int n, a[100100];scanf("%d",&n);
            for(int i=1;i<=n;i++) scanf("%d",a+i);
            std::sort(a+1,a+n+1);
            int ans = std::unique(a+1,a+n+1)-(a+1);
            printf("%d
    ",ans);
        }
        return 0;
    }
    

    C. Ehab and Path-etic MEXs

    #include<bits/stdc++.h>
    const int maxn= 1e5+100;
    using namespace std;
    int a[maxn],b[maxn],num[maxn];
    int main()
    {
        int n;
        scanf("%d",&n);
        for(int i=1;i<n;i++)
        {
            scanf("%d%d",&a[i],&b[i]);
            num[a[i]]++;num[b[i]]++;
        }
        int op = 0;
        for(int i=1;i<=n;i++) if(num[i]>=3) {op = i; break;}
        if(!op) for(int i=0;i<n-1;i++) printf("%d
    ",i);
        else
        {
            for(int i=1,cnt1=0,cnt2=3;i<n;i++)
            {
                if((a[i]==op || b[i]==op) && cnt1<=2) printf("%d
    ",cnt1++);
                else printf("%d
    ",cnt2++);
            }
        }
        return 0;
    }
    

    D. Ehab the Xorcist

    #include<bits/stdc++.h>
    typedef long long ll;
    int main()
    {
        ll x,s;
        scanf("%lld%lld",&x,&s);
        if(s==0 && x==0) printf("0
    ");
        else if(s==x) printf("1
    %lld",s);
        else if(s<x) printf("-1
    ");
        else if((s-x)%2) printf("-1
    ");
        else{
            ll sub = s-x;
            ll a = sub/2, b = s-a;
            if((a^b)==x) printf("2
    %lld %lld",a,b);
            else printf("3
    %lld %lld %lld",x,sub/2,sub/2);
        }
        return 0;
    }
    
  • 相关阅读:
    浅谈ASP.NET核心对象
    SQL MID() 函数
    如何查看linux系统CPU利用率 简单
    canvas 学习笔记 简单
    linux 为用户设定、修改密码 passwd 简单
    转crontab用法(例子) 简单
    mongodb加入系统服务 简单
    转导出csv文件时,处理分隔符问题 简单
    tar和gzip、unzip命令详解 简单
    linux创建用户命令 简单
  • 原文地址:https://www.cnblogs.com/RioTian/p/13500716.html
Copyright © 2011-2022 走看看