AcWing 第 98 场周赛 ABC

Posted Vivian-0918

tags:

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

https://www.acwing.com/activity/content/competition/problem_list/3128/

4947. 大整数

题目大意:

给定n,k。输出n个k。
输入样例:
3 2
输出样例:
222
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<LL,LL> PII;
const LL MAXN=1e18,MINN=-MAXN,INF=0x3f3f3f3f;
const LL N=1e6+10,M=2023;
const LL mod=100000007;
const double PI=3.1415926535;
#define endl \'\\n\'
int main()

    cin.tie(0); cout.tie(0); ios::sync_with_stdio(false);
    LL T=1;
    //cin>>T;
    while(T--)
    
        LL n,k;
        cin>>n>>k;
        for(int i=1;i<=n;i++)
        
            cout<<k;
        
    
    return 0;

4948. 大乘积

输入样例1:
3
5 10 1
输出样例1:
50
输入样例2:
4
1 1 10 11
输出样例2:
110
输入样例3:
5
0 3 1 100 1
输出样例3:
0
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<LL,LL> PII;
const LL MAXN=1e18,MINN=-MAXN,INF=0x3f3f3f3f;
const LL N=1e6+10,M=2023;
const LL mod=100000007;
const double PI=3.1415926535;
#define endl \'\\n\'
string s[N];
int main()

    cin.tie(0); cout.tie(0); ios::sync_with_stdio(false);
    LL T=1;
    //cin>>T;
    while(T--)
    
        LL n;
        cin>>n;
        for(int i=1;i<=n;i++)
        
            cin>>s[i];
        
        LL sum=0;
        string beg="1";
        for(int i=1;i<=n;i++)
        
            if(s[i]=="0")
            
                cout<<"0";
                return 0;
            
            else
            
                bool flag=true;
                LL zero=0;
                for(int j=0;j<s[i].size();j++)
                
                    if(j>=1&&s[i][j]==\'0\') zero++;
                
                if(s[i][0]!=\'1\'||zero!=s[i].size()-1) flag=false;
                if(flag==false) beg=s[i];
                else sum+=s[i].size()-1;
            
        
        cout<<beg;
        for(int i=1;i<=sum;i++)
        
           cout<<"0";
        
    
    return 0;

4949. 末尾连续0

输入样例1:
1
输出样例1:
5
5 6 7 8 9 
输入样例2:
5
输出样例2:
0
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<LL,LL> PII;
const LL MAXN=1e18,MINN=-MAXN,INF=0x3f3f3f3f;
const LL N=1e6+10,M=2023;
const LL mod=100000007;
const double PI=3.1415926535;
#define endl \'\\n\'
LL mp[10];
int main()

    cin.tie(0); cout.tie(0); ios::sync_with_stdio(false);
    LL T=1;
    //cin>>T;
    while(T--)
    
        LL m;
        cin>>m;
        vector<LL> v;
        for(LL i=1;i<=1e7;i++)
        
            LL t=i;
            while(t%2==0) mp[2]++,t/=2;
            while(t%5==0) mp[5]++,t/=5;
            if(min(mp[2],mp[5])==m) v.push_back(i);
        
        cout<<v.size()<<endl;
        for(int i:v)
        
            cout<<i<<" ";
        
    
    return 0;

Acwing第 59 场周赛完结

题目难度较简单,思维题为主。
https://www.acwing.com/activity/content/competition/problem_list/2015/

目录

4491. 数组操作 【思维】

#include<bits/stdc++.h>
using namespace std;
const int N=1e5*10;
typedef long long int LL;
int a[N],s[N],temp,n;
int main(void)

    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i],s[i]=s[i-1]+a[i],temp=min(temp,s[i]);
    cout<<s[n]-temp;
    return 0;

4492. 减法操作【思维】


质数的话,一步数到位。偶数的话次数就是除以2。其他情况则是因子都是质奇数。
那么暴力的找最小的减,此时一个奇数-一个奇数。结果就变偶数了下一步就直接一步到位了。

#include<bits/stdc++.h>
using namespace std;
const int N=1e5*10;
typedef long long int LL;
LL n,cnt;
void solve(LL n)

    while(n)
    
        if(n%2==0)
        
            cnt+=n/2;
            break;
        
        for(LL i=3;i<=n;i+=2)
        
            if(n%i==0)
            
                cnt++;
                n-=i;
                break;
            
        
    

bool check(LL n)

    if(n==1) return true;
    for(LL i=2;i<=n/i;i++) if(n%i==0) return false;
    return true;

int main(void)

    cin>>n;
    if(check(n)) cout<<1<<endl;
    else solve(n),cout<<cnt<<endl;
    return 0;

4493. 环形连通分量【找干净的环】


cf的某次的原题,当时的做法忘了咋做了。又写了一种写法。

#include<bits/stdc++.h>
using namespace std;
const int N=1e5*5+10;
int p[N],st[N],d[N],n,m;
int find(int x)

    if(x!=p[x]) p[x]=find(p[x]);
    return p[x];

vector< pair<int,int> >ve;
int main(void)

    cin>>n>>m;
    for(int i=1;i<=n;i++) p[i]=i;
    int cnt=0;
    while(m--)
    
        int a,b; cin>>a>>b;
        d[a]++,d[b]++;
        ve.push_back(a,b);
    
    for(int i=1;i<=n;i++) if(d[i]>2) st[i]=1;//标记为坏的
    for(int i=0;i<ve.size();i++)
    
        int a=ve[i].first,b=ve[i].second;
        if(find(a)==find(b)&&!st[find(a)]) cnt++;//是一个环 且无多余的边
        else
        
            if(st[find(a)]) st[find(b)]=1;//合并前将好坏合并
            p[find(a)]=find(b);
        
    
    cout<<cnt;
    return 0;

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

AcWing第23场周赛题解

Acwing第 53 场周赛完结

Acwing第 31 场周赛完结

Acwing第 36 场周赛完结

Acwing第 56 场周赛完结

Acwing第 32 场周赛完结