Acwing第 34 场周赛

Posted MangataTS

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Acwing第 34 场周赛相关的知识,希望对你有一定的参考价值。

比赛链接

https://www.acwing.com/activity/content/introduction/92/

A. 三元组(签到+语法)

思路

我们直接将三个位置的数做一个累加,如果最后三者都为0,那么就输出YES否则输出NO

代码

#include<bits/stdc++.h>
using namespace std;
int main()

    int n;
    int x,y,z;
    int a,b,c;
    a = b = c = 0;
    cin>>n;
    for(int i = 1;i <= n; ++i) 
        cin>>x>>y>>z;
        a += x;
        b += y;
        c += z;
    
    if(a == 0 && b == 0 && c == 0) puts("YES");
    else puts("NO");
    

B.数字(模拟)

思路

我们直接通过进制转换将 [ 2 , A − 1 ] [2 ,A-1] [2,A1]进制下的每一个数位的和求出来,然后再求得该和与 A − 2 A-2 A2的最大公因数,然后按格式输出即可

代码

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

#define ll long long

ll A;

ll get(ll k, ll b) 
    ll ans = 0;
    while(k)
        ans += k % b;
        k/=b;
    
    return ans;



int main()

    cin>>A;
    ll up = 0;
    for(int i = 2;i <= A-1; ++i)
        up += get(A,i);
    
    ll down = A-2;
    ll gcd = __gcd(up,down);
    up/=gcd;
    down/=gcd;
    cout<<up<<"/"<<down<<endl;
    return 0;

C.序列重排(思维 or 拓扑排序)

思路

通过分析我们发现一个关系,对于当前数的前一个数的因子2的数量要么小于当前位置,要么等于,对于等于的情况,前一个数的3的因子必须大于当前位置,所以我们统计数组中每个元素的2因子数量和3因子数量,对2因子数量降序、3因子数量升序即可

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define mod 1000000009
#define endl "\\n"
#define PII pair<int,int>
ll ksm(ll a,ll b) 
	ll ans = 1;
	for(;b;b>>=1LL) 
		if(b & 1) ans = ans * a % mod;
		a = a * a % mod;
	
	return ans;


ll lowbit(ll x)return -x & x;

const int N = 2e6+10;
ll a;
vector<ll>V[N];

ll get(ll a,ll b) 
	ll ans = 0;
	while(a % b == 0) ans++,a/=b;
	return ans;


int main()

	int n;
	cin>>n;
	for(int i = 0;i < n; ++i) 
		cin>>a;
		V[i] = get(a,2),-get(a,3),a;
	
	sort(V,V+n);
	for(int i = 0;i < n; ++i) 
		cout<<V[i][2]<<" \\n"[i==n-1];
	
	
	return 0;

以上是关于Acwing第 34 场周赛的主要内容,如果未能解决你的问题,请参考以下文章

Acwing第 34 场周赛完结

AcWing第23场周赛题解

Acwing第 53 场周赛完结

Acwing第 31 场周赛完结

Acwing第 56 场周赛完结

Acwing第 32 场周赛完结