1 条题解
-
0
拿下第一AC
首先看到有人交了TLE,盲猜实是在模拟,但真的有必要吗?
让我们不妨进行一下
数学推导看题发呆:碰到一张正面朝上的牌,将它翻转后停止这次翻牌
这说明如果要将一张正着的牌翻过来,其前面的牌一定是反面朝下的
又因为一律从左往右翻牌,那么对于第i张牌,如果它是正的,无论其它牌怎么样,只要处于相同的位置,就有一个相同的次数a[i],代表将其反转所需的次数,那么答案就是所有a[i]之和
举个栗子:对于"101001000",应进行以下处理(不会markdown,请脑补换行):
101001000 ans=0 ↓ 001001000 ans+=a[1] ↓ 000001000 ans+=a[3] ↓ 000000000 ans+=a[6]
ans=a[1]+a[3]+a[6]
接下来推导a[i],手算可知,这是有规律的:
a[i]=2^(i-1)
但我们还可以再
深入胡思乱想些其实到这里问题就解决了,有没有发现,这不就是二进制吗?把字符串倒序,其十进制的值就是答案 终于,最终代码出炉(请勿复制)——
n=int(input()) for _ in range(n): input() s=input() print(int(s[::-1],2))
- 1
信息
- ID
- 1111
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- (无)
- 递交数
- 23
- 已通过
- 2
- 上传者