[R22B]数字圆环 - 代码源竞赛平台
时空限制
1S/512M
题目描述
给定一个环形序列,包含 n 个二进制数字(每个数字为 0 或 1)。对于每个起始位置 i(0≤i<n),从 i 开始顺时针遍历整个环一周,得到一个长度为 n 的二进制数(最高位为起始位置的数字)。计算所有 n 个二进制数的总和(用十进制整数输出)。
格式
输入格式
第一行包含一个整数 n,表示圆环上数字的个数。
第二行包含一个长度为 n 的字符串 s,字符串中只包含字符 0 和 1,表示圆环上的数字序列(按顺时针顺序给出)。
输出格式
输出一行,包含一个整数,表示所有起始位置得到的二进制数的总和(用十进制表示)。
样例
样例输入 #1
3
010
样例输出 #1
7
样例解释 #1
输入序列为 010,表示圆环上的数字序列为 [0,1,0]。
从索引 0 开始:序列 [0,1,0]→(010)2=(2)10
从索引 1 开始:序列 [1,0,0]→(100)2=(4)10
从索引 2 开始:序列 [0,0,1]→(001)2=(1)10
故答案是 2+4+1=7。
样例输入 #2
4
1111
样例输出 #2
60
样例解释 #2
每个起始位置得到的二进制数都是 (1111)2=(15)10。
总和为 15×4=60。
数据规模
对于 40% 的数据,1≤n≤20。
对于 100% 的数据,1≤n≤50,si∈{1,0}。