std::string
问题 1 :
将字符串相加(拼接)的操作复杂度是
因为
输出一个比较大的数,如
问题 2 :
第二个问题,注意到
模拟一下
for (int i = 2; i <= n; ++i) pre[i] = pre[i - 1] & a[i];
此时,
for (int i = n - 1; i; --i) post[i] = post[i + 1] & a[i];
此时,
for (int i = 1; i < n; ++i) if (pre[i] + post[i + 1] == pre[n]) {
++ans;
}
我们知道
- 当
i<x ,post_{i+1}=0 ,此时只有pre_i=0 时ans 会加1 。 - 当
i\ge x ,pre_{i}=0 ,此时只有post_{i+1}=0 时ans 会加1 。
当
构造一组数据,其中数组刚好有两个
实际上,剩下的数按位与的结果为 5\n1 0 2 0 4),甚至输入的 6\n1 1 4 5 1 4),也都有几率会使程序出错。但是只要求构造一组使程序出错的数据即可,所以不需要分析更复杂的情况。
Python 程序代码:
a=int(input())
if(a==1):print(100000)
if(a==2):print("5\n1 0 1 0 1")