#aBC310E. [ABC310E] NAND repeatedly

[ABC310E] NAND repeatedly

AT_abc310_e [ABC310E] NAND repeatedly

题目描述

给定一个由 01 组成的长度为 NN 的字符串 SSSS 表示一个长度为 NN 的数列 A=(A1,A2,,AN)A=(A_1,A_2,\ldots,A_N),其中 SS 的第 ii 个字符(1iN1\leq i\leq N)为 0Ai=0A_i=0,为 1Ai=1A_i=1

请计算下式的值:

$$\sum_{1\leq i\leq j\leq N}(\cdots((A_i\barwedge A_{i+1})\barwedge A_{i+2})\barwedge\cdots\barwedge A_j)$$

更严格地说,对于如下定义的 f(i,j) (1ijN)f(i,j)\ (1\leq i\leq j\leq N),请计算 i=1Nj=iNf(i,j)\displaystyle\sum_{i=1}^{N}\sum_{j=i}^{N}f(i,j)

$$f(i,j)=\left\{ \begin{matrix} A_i & (i=j)\\ f(i,j-1)\barwedge A_j & (i<j) \end{matrix} \right.$$

其中,否定与(\barwedge)是满足以下规则的二元运算符:

$$0\barwedge0=1,\ 0\barwedge1=1,\ 1\barwedge0=1,\ 1\barwedge1=0$$

输入格式

输入以如下格式从标准输入读入。

NN SS

输出格式

请输出答案,输出一行。

输入输出样例 #1

输入 #1

5
00110

输出 #1

9

输入输出样例 #2

输入 #2

30
101010000100101011010011000010

输出 #2

326

说明/提示

限制条件

  • 1N1061\leq N\leq 10^6
  • SS 是由 01 组成的长度为 NN 的字符串
  • 输入均为整数

样例解释 1

对于所有满足 1ijN1\leq i\leq j\leq N(i,j)(i,j) 组合,f(i,j)f(i,j) 的值如下所示:

  • f(1,1)=0=0f(1,1)=0=0
  • f(1,2)=00=1f(1,2)=0\barwedge0=1
  • f(1,3)=(00)1=0f(1,3)=(0\barwedge0)\barwedge1=0
  • f(1,4)=((00)1)1=1f(1,4)=((0\barwedge0)\barwedge1)\barwedge1=1
  • $f(1,5)=(((0\barwedge0)\barwedge1)\barwedge1)\barwedge0=1$
  • f(2,2)=0=0f(2,2)=0=0
  • f(2,3)=01=1f(2,3)=0\barwedge1=1
  • f(2,4)=(01)1=0f(2,4)=(0\barwedge1)\barwedge1=0
  • f(2,5)=((01)1)0=1f(2,5)=((0\barwedge1)\barwedge1)\barwedge0=1
  • f(3,3)=1=1f(3,3)=1=1
  • f(3,4)=11=0f(3,4)=1\barwedge1=0
  • f(3,5)=(11)0=1f(3,5)=(1\barwedge1)\barwedge0=1
  • f(4,4)=1=1f(4,4)=1=1
  • f(4,5)=10=1f(4,5)=1\barwedge0=1
  • f(5,5)=0=0f(5,5)=0=0

这些值的总和为 0+1+0+1+1+0+1+0+1+1+0+1+1+1+0=90+1+0+1+1+0+1+0+1+1+0+1+1+1+0=9,因此请输出 99

请注意,\barwedge 不满足结合律。例如,$(1\barwedge1)\barwedge0=0\barwedge0=1\neq0=1\barwedge1=1\barwedge(1\barwedge0)$。

由 ChatGPT 4.1 翻译