Codeforces Round 929 (Div. 3)

Codeforces Round 929 (Div. 3)

比赛链接

A. Turtle Puzzle: Rearrange and Negate

思路

根据题意,很明显数组中所有元素的绝对值总和就是答案

Code

#include <bits/stdc++.h>
using namespace std;
#define all(x) x.begin()+1,x.end()

#define int long long

void solve(){
    int n;
    cin>>n;
    std::vector<int> a(n+1);
    int ans=0;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        ans+=abs(a[i]);
    }
    cout<<ans<<endl;
    return ;
    
}

signed main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr), std::cout.tie(nullptr);

    int T = 1;
    std::cin >> T;
    while (T--) solve();

    return 0;

}

B. Turtle Math: Fast Three Task

思路

对3取模后无非是0,1,2 如果一开始是0则不需要操作,如果是2只需要执行一次第二次操作,如果是1就要看序列当中是否有一个元素对3取模后是1,则只需要删除一次就可,否则就必须删除两个取模是2的

Code

//我写的有点复杂
#include <bits/stdc++.h>
using namespace std;
#define all(x) x.begin()+1,x.end()

#define int long long

void solve(){
    int n;
    cin>>n;
    int ans=0;
    int ans1=0;

    std::vector<int> a(n+1);
    std::vector<int> b;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        ans+=a[i];
    }
    if(ans%3==0){
        cout<<0<<endl;
        return ;
    }
    if(ans%3==2){
        cout<<1<<endl;
        return ;
    }
    else{
        for(int i=1;i<=n;i++){
            b.push_back(a[i]%3);

        }
        sort(b.begin(),b.end());
        for(int i=0;i<b.size();i++){
            if(b[i]==1){
                cout<<1<<endl;
                return ;
            }
            else if(b[i]==2){
                ans1++;

            }

        }
        if(ans1>=2){
            cout<<2<<endl;
            return ;
            
        }

    }
    
}

signed main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr), std::cout.tie(nullptr);

    int T = 1;
    std::cin >> T;
    while (T--) solve();

    return 0;

}

C. Turtle Fingers: Count the Values of k

思路

貌似模拟就可以解决,数据量也不算很大

Code

#include <bits/stdc++.h>
using namespace std;
#define all(x) x.begin()+1,x.end()

#define int long long

void solve(){
    int a,b,l;
    cin>>a>>b>>l;
    set<int> s;

    for(int i=0;pow(a,i)<=l;i++){
        int res1=pow(a,i);
        if(l%res1){
            continue;
        }
        for(int j=0;pow(b,j)<=l;j++){
            int res2=pow(b,j);
            if(l%res2){
                continue;
            }
            if(l%(res1*res2)==0){
                s.insert(l/res1/res2);

            }

        }
    }
    cout<<s.size()<<endl;
    
}

signed main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr), std::cout.tie(nullptr);

    int T = 1;
    std::cin >> T;
    while (T--) solve();

    return 0;

}

D. Turtle Tenacity: Continual Mods

思路

如果我们想让一个数组的所有元素进行取模最后得数不为0的话,我们就需要让小数字在前面,但是因为数组中是可以出现重复元素的,所以我们又必须保证其他数字对最小的数取模不为0,这样就肯定可以

Code

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define all(x) x.begin()+1,x.end()

void solve(){
	int n;
	cin>>n;
	std::vector<int> a(n+1);
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	int minn=*min_element(a.begin()+1,a.end());
	if(count(a.begin()+1,a.end(),minn)==1){
		cout<<"YES"<<endl;
		return ;
	}
	for(int i=1;i<=n;i++){
		if(a[i]%minn!=0){
			cout<<"YES"<<endl;
			return ;
		}
	}
	cout<<"NO"<<endl;
	return ;
}
signed main(){
	std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr), std::cout.tie(nullptr);
	int t=1;
	cin>>t;
	while(t--){
		solve();
	}
	return 0;

}
posted @ 2024-02-28 19:41  du463  阅读(18)  评论(0编辑  收藏  举报