#CS40211. 阅读程序2-字符处理-11

阅读程序

注意:切勿用电脑直接运行代码得出答案,请用大脑+笔+纸运行代码答题,否则是在浪费你的时间。

第2节:字符处理

第11题【NOIP】2018

#include <iostream>
using namespace std;
string s;
long long magic(int l, int r) {
    long long ans = 0;
        for (int i = l; i <= r; ++i) {
        ans = ans * 4 + s[i] - ‘a’ + 1;
    }
return ans;
}
int main() {
    cin >> s;
    int len = s.length();
    int ans = 0;
15  for (int l1 = 0; l1 < len; ++l1) {
16      for (int r1 = l1; r1 < len; ++r1) {
            bool bo = true;
18          for (int l2 = 0; l2 < len; ++l2) {
19              for (int r2 = l2; r2 < len; ++r2) {
                    if (magic(l1, r1) == magic(l2, r2) 
                        && (l1 != l2 || r1 != r2)) 
                        bo = false;
                }
            }     
            
            if (bo) {
                ans += 1;
            }
        }
    }
    cout << ans << endl;
    return 0;
}

●判断题

(1)输出一定不为0。

(2)将15、16行与18、19行对调,答案不变。

(3)输人字符串最多包含5种字符串,若更多则容易互相冲突。

(4)调用第12行需要iostream库头。

●选择题

(5)输人abacaba,则输出的结果是()。

(6)输人abcbbcc,则输出的结果是