CodeForces - Harbour.Space Scholarship Contest 2021-2022 (Div. 1 + Div. 2)

本文介绍了四道编程题:A.通过观察找出数字规律并求和;B.字符串反转挑战,Pretest AC但System Test失败;C.涉及变量初始化的罚分规则;D.回退字符匹配问题,类似B题。展示了不同难度和技巧的应用。
摘要由CSDN通过智能技术生成

A. Digits Sum

找规律题,没想到看样例直接蒙对……

#include <iostream>
using namespace std;
int main() {
    int t, n;
    cin >> t;
    while (t--) {
        cin >> n;
        cout << (n + 1) / 10 << endl;
    }
    return 0;
}

B. Reverse String

感觉是前四题中最难的。
Pretest AC,System Test WA。

#include <iostream>
#include <string>
using namespace std;
int main() {
    int q, ok, ps, pt, n;
    string s, t;
    cin >> q;
    while (q--) {
        cin >> s >> t;
        for (int i = 0; i < s.length(); i++) {
            for (ps = i, pt = 0, ok = 1; ps < s.length() && pt < t.length() && s[ps] == t[pt]; ps++, pt++);
            for (ps -= 2; pt < t.length(); ps--, pt++)
                if (s[ps] != t[pt] || ps < 0) {ok = 0; break;}
            if (ok) { cout << "YES" << endl; break;}
        }
        if (!ok) cout << "NO" << endl;
    }
    return 0;
}

C. Penalty

忘记初始化变量,卡了半天……

#include <iostream>
using namespace std;
int main() {
    int t, aw, al, at, bw, bl, bt, ok;
    char a[12];
    cin >> t;
    while (t--) {
        aw = al = bw = bl = 0;
        at = bt = 5;
        ok = 0;
        cin >> a + 1;
        for (int i = 1; i <= 10; i++) {
            if (i % 2) {
                at--;
                switch (a[i]) {
                case '1': al++;
                case '?': aw++;
                }
            } else {
                bt--;
                switch (a[i]) {
                case '1': bl++;
                case '?': bw++;
                }
            }
            if (al + at < bw || bl + bt < aw) {
                ok = 1;
                cout << i << endl;
                break;
            }
        }
        if (!ok) cout << 10 << endl;
    }
    return 0;
}

D. Backspace

像极了B……

#include <iostream>
#include <string>
using namespace std;
int main() {
    int q, ps, pt, ok;
    string s, t;
    cin >> q;
    while (q--) {
        cin >> s >> t;
        for (ps = pt = 0, ok = 1; pt < t.length() && ok; ps++, pt++)
            while (s[ps] != t[pt]) {
                ps += 2;
                if (ps >= s.length()) {ok = 0; break;}
            }
        if (!ok || (s.length() - ps) % 2)
            for (ps = 1, pt = 0, ok = 1; pt < t.length() && ok; ps++, pt++)
                while (s[ps] != t[pt]) {
                    ps += 2;
                    if (ps >= s.length()) {ok = 0; break;}
                }
        if (!ok || (s.length() - ps) % 2) cout << "NO" << endl;
        else cout << "YES" << endl;
    }
    return 0;
}

后面的来不及做不会了……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值