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
int main(){
    int t;
    scanf("%d",&t);
    while(t--){
        int n;scanf("%d",&n);
        printf("1 %d\n",n-1);
    }
    return 0;
}

B. CopyCopyCopyCopyCopy

Description

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

Solution

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

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

#include
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\n",ans);
    }
    return 0;
}

C. Ehab and Path-etic MEXs

Codeforces Round #628 (Div. 2)_第1张图片

#include
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=3) {op = i; break;}
    if(!op) for(int i=0;i

D. Ehab the Xorcist

Codeforces Round #628 (Div. 2)_第2张图片

#include
typedef long long ll;
int main()
{
    ll x,s;
    scanf("%lld%lld",&x,&s);
    if(s==0 && x==0) printf("0\n");
    else if(s==x) printf("1\n%lld",s);
    else if(s

你可能感兴趣的:(Codeforces Round #628 (Div. 2))