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,A−1]进制下的每一个数位的和求出来,然后再求得该和与 A − 2 A-2 A−2的最大公因数,然后按格式输出即可
代码
#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 场周赛的主要内容,如果未能解决你的问题,请参考以下文章