ModricWang买内存

时间限制: 1000 ms 内存限制: 65536 kb
总通过人数: 0 总提交人数: 0

题目描述

ModricWang想要买一根内存,显然,以MB为单位的话,现在市场上内存的容量都是2的幂,例如4096MB,8192MB等。但是在神奇的tb市场上,有些内存是有问题的,内部有坏块,实际容量会缩水。假定一个内存实际可访问容量为X MB,如果X为2的幂,就认为这根内存没有缩水,否则就认为这根内存缩水了。

现在ModricWang一共买了n根内存,其中有很多都是坏的,不能用,ModricWang很生气,决定用融合卡把两根内存合并成一根,合并以后的容量直接等于原先两根内存的和。请问有多少种合并方法,可以使合并后的内存容量是2的幂?

注意,ModricWang生气的时候,连原本没问题的内存都一定要融合一下再用。

并且,ModricWang只有一张融合卡。

输入

第一行为内存组数n,$3 \leq n \leq 2*10^4 $

第二行,n个正整数,表示内存可访问的容量,都在long long范围内

输出

对于每组数据,输出一行,合法的合并方法数

输入样例

4
1 2 3 3

输出样例

2

样例解释

1既可以和前一个3合并,也可以和后一个3合并

HINT

给出使用stdio读入unsigned long long的方法:

unsigned long long ull;
scanf("%llu",&ull);

输出同理。

iostream无需指定类型,因此不做说明,直接读入/输出即可。

相关推荐