Codeforces Round #716 (div.2)

A

题意

给定一个长度为\(n(1\leq n\leq 100)\)的序列\(a\),判断是否存在\(a\)的子序列\(b\),使得\(b\)中所有元素的乘积不是完全平方数

题解

由于\(a^2*b^2*...=(a*b*...)^2\),所以如果序列中的任意元素都是完全平方数,则不满足条件,否则满足条件

#include<bits/stdc++.h>
#define LL long long
using namespace std;

const int maxn=110;
int T,n,a[maxn];

int main(){
    scanf("%d",&T);
    while(T--){
        scanf("%d",&n);
        bool f=false;
        for(int i=1;i<=n;i++){
            scanf("%d",&a[i]);
            int t=sqrt(a[i]);
            if(t*t!=a[i]) f=true;
        }
        printf("%s\n",f?"YES":"NO");
    }
}

B

题意

给出\(n(1\leq n\leq 1e5)\)\(k(1\leq k\leq 20)\),计算满足条件的长度为\(n\)的序列个数
·所有元素大小均在\([0,2^k-1]\)
·所有元素的与是零
·所有元素的和最大

题解

每一位只有一个元素为零,由于有\(n\)个数和\(k\)位,所以结果为\(n^k\)

#include<bits/stdc++.h>
#define LL long long
using namespace std;

const int mod=1e9+7;
int T,n,k;

int main(){
    scanf("%d",&T);
    while(T--){
        scanf("%d %d",&n,&k);
        LL ans=1;
        for(int i=1;i<=k;i++){
            ans=ans*n%mod;
        }
        printf("%lld\n",ans);
    }
}

C

题意

给出\(n(2\leq n\leq 1e5)\),找到序列\([1,2,\cdots,n-1]\)的最长子序列,子序列中所有元素的乘积模\(n\)等于\(1\)

题解

首先,子序列中所有元素必须与\(n\)互质,因为如果有元素与\(n\)不互质,则所有元素的乘积与\(n\)不互质,\(gcd(prod,n)\neq 1\),所以乘积模\(n\)不为\(1\)
所以找到所有与\(n\)互质的数,将它们乘起来,如果乘积模\(n\)不为\(1\),则由于余数与\(n\)互质,在选取的数中删掉这个数即可

#include<bits/stdc++.h>
#define LL long long
using namespace std;

int n;
vector<int> vec,res;

int main(){
    scanf("%d",&n);
    int cnt=0;
    LL ans=1;
    for(int i=1;i<n;i++){
        if(__gcd(i,n)==1){
            cnt++;
            vec.push_back(i);
            ans=ans*i%n;
        }
    }
    if(ans!=1){
        printf("%d\n",cnt-1);
        for(int i=0;i<cnt;i++){
            if(vec[i]!=ans) res.push_back(vec[i]);
        }
        cnt--;
        for(int i=0;i<cnt-1;i++){
            printf("%d ",res[i]);
        }
        printf("%d\n",res[cnt-1]);
    }
    else{
        printf("%d\n",cnt);
        for(int i=0;i<cnt-1;i++){
            printf("%d ",vec[i]);
        }
        printf("%d\n",vec[cnt-1]);
    }
}

D

E

posted @ 2021-04-20 00:50  fxq1304  阅读(91)  评论(0编辑  收藏  举报