QFNU-ACM 2020.10.23 Trating

A

统计判断是不是由两种数构成,两种数的个数是不是相等

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,a[2]={0},cou=0,sum1=0,sum2=0,c;
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>c;
        if(c==a[0]){
            sum1++;
        }else if(c==a[1]){
            sum2++;
        }else{
           if(cou==0){
            a[0]=c;
            sum1++;
           }else if(cou==1){
           a[1]=c;
           sum2++;
           }
           cou++;
        }
    }
    if(cou==2&&sum1==sum2){
        cout<<"YES"<<endl;
        cout<<a[0]<<" "<<a[1]<<endl;
    }else{
        cout<<"NO"<<endl;
    }
    return 0;
}

B

循环判断两个大写字母间,有多少种不同的小写字母

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,maxx=0,i,j,coun=0;
    cin>>n;
    string s;
    cin>>s;
    int a[26]= {0};
    for(int i=0; i<n; i++)
    {
        if(s[i]<='z'&&s[i]>='a')
        {
            if(a[s[i]-'a']==0)
            {
                coun++;
            }
            a[s[i]-'a']++;
        }
        if(s[i]<='Z'&&s[i]>='A')
        {
            maxx=max(maxx,coun);
            coun=0;
            for(j=0; j<26; j++)
            {
                a[j]=0;
            }
        }
    }
    maxx=max(maxx,coun);
    cout<<maxx<<endl;
    return 0;
}

D

找出这组数的最大值,将其他数补成这个数,需要多少个数

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,sum=0,maxx=0,a,i;
    cin>>n;
    for(i=0;i<n;i++){
        cin>>a;
        maxx=max(a,maxx);
        sum+=a;
    }
    cout<<maxx*n-sum<<endl;
    return 0;
}

E

给定一个由RGBY四种颜色构成的(什么来着),有一部分损坏了,用!表示,计算将损坏的补好需要每种颜色各多少个,相邻的四个每种颜色只会出现一次

通过 第i个的颜色,与i+4,i-4 相等,补齐所有字符的颜色

#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s;
    cin>>s;
    int n=s.length();
    int i,a[200]= {0};
    for(i=0; i<n; i++)
    {
        if(s[i]=='!')
        {
            a[i]=1;
        }
    }
    for(i=0; i<n; i++)
    {
        if(s[i]!='!')
        {
            int j=i,k=i;
            while(j+4<n)
            {
                s[j+4]=s[j];
                j+=4;
            }
            while(k-4>=0)
            {
                s[k-4]=s[k];
                k-=4;
            }
        }

    }
    int R=0,Y=0,B=0,G=0;
    for(i=0; i<n; i++)
    {
        if(a[i]==1)
        {
            if(s[i]=='R')
            {
                R++;
            }
            else if(s[i]=='G')
            {
                G++;
            }
            else if(s[i]=='B')
            {
                B++;
            }
            else if(s[i]=='Y')
            {
                Y++;
            }
        }
    }
    cout<<R<<" "<<B<<" "<<Y<<" "<<G<<endl;
    return 0;
}

 

上一篇:c – 无法使ATL连接点正常工作


下一篇:c – 如何使用CAtlComModule实现COM事件接收器?