G和H我不会,H题李昂已经发题解了,等着看他的吧,我写的肯定是不如他

A题

这道题可以拿字符串写,如果字符串的长度只有2,且组成该字符串的两个字符相同那它就是好数

using namespace std;
#define endl '\n'

int main(){
    string a;
    cin>>a;
    if (a.length()==2 && a[0]==a[1])cout<<"Yes";
    else cout<<"No";
    return 0;
}

B题

字符串有三个字符,直接输出第一个和第三个就行

using namespace std;
#define endl '\n'

int main(){
    string a;
    cin>>a;
    cout<<a[0]<<a[2];
    return 0;
}

C题

如果x,y,n相等,那他们的最大公约数就是n本身,但题目里说了x和y不相等,那我们令y=2x就好了

using namespace std;
#define endl '\n'


int main(){
    int q;
    cin>>q;
    while (q--){
        long long a;
        cin>>a;
        cout<<a<<' '<<a*2<<endl;
    }
    return 0;
}

D题

暴力就能过,但是我也只会暴力

把数的每个数位分开,其中包含x就计数即可

using namespace std;
#define endl '\n'

int main(){
    int n,x,ans=0;
    cin>>n>>x;
    for (int i = 1; i <= n; ++i) {
        int temp=i;
        while (temp){
            if (temp%10==x)ans++;
            temp/=10;
        }
    }
    cout<<ans;
    return 0;
}

E题

我们先比一下大小,让短的是B,长的是A

假如A=12345678 B=111,那我们计算的过程是这样的

  12345678
+      111
————————————
  12345789

由此可见,我们是从A和B长度的差值开始按数位计算,一共计算B的长度次

如果有哪一位的计算结果大于等于10,那它就是Hard,没有就是Easy

using namespace std;
#define endl '\n'

int main(){
    string a,b;
    cin>>a>>b;
    if (b.length()>a.length())swap(a,b);
    int doing =a.length()-b.length();
    for (int i=0;i<b.length();i++) {
        int temp=a[doing+i]-'0'+b[i]-'0';
        if (temp>=10){
            cout<<"Hard";
            return 0;
        }
    }
    cout<<"Easy";
    return 0;
}

F题

做这道题的时候我还不知道有取整函数这玩意/(ㄒoㄒ)/~~

向上取整减向下取整,再加上因升到高级的奖而补充上来的人的数量就行了

using namespace std;
#define endl '\n'

int main(){
    double n;
    cin>>n;
    int ansA,ansB,ansC;
    double A=n*0.1,B=n*0.2,C=n*0.3;
    ansA=ceil(A)-floor(A);
    ansB=ceil(B)-floor(B)+ansA;
    ansC=ceil(C)-floor(C)+ansB;
    cout<<ansA<<' '<<ansB<<' '<<ansC;
}

I题

答案是3181,代码直接这么写就行了↓

using namespace std;
#define endl '\n'

int main(){
    cout<<3181;
    return 0;
}

我的结果是模拟出来的,除了模拟我也不会别的

先设定一个长度为9的数组,填充上2021,模拟每种卡片的数量,用n表示当前试图拼的数字

如果某种卡片数量已经到0了,那就拼不出n,能拼出来最大的就是n-1

using namespace std;
#define endl '\n'

int main(){
    int arr[9];
    fill(arr,arr+9,2021);
    int n=0;
    while (1){
        n++;
        cout<<n<<endl;
        int temp=n;
        while (temp){
            if (arr[temp%10]<=0){cout<<n-1;return 0;}
            else arr[temp%10]--;
            temp/=10;
        }
    }
}