ModricWang想要买一根内存,显然,以MB为单位的话,现在市场上内存的容量都是2的幂,例如4096MB,8192MB等。但是在神奇的tb市场上,有些内存是有问题的,内部有坏块,实际容量会缩水。假定一个内存实际可访问容量为X MB,如果X为2的幂,就认为这根内存没有缩水,否则就认为这根内存缩水了。
现在ModricWang一共买了n根内存,其中有很多都是坏的,不能用,ModricWang很生气,决定用融合卡把两根内存合并成一根,合并以后的容量直接等于原先两根内存的和。请问有多少种合并方法,可以使合并后的内存容量是2的幂?
第一行为内存组数n,$3 \leq n \leq 2*10^4 $
第二行,n个正整数,表示内存可访问的容量,都在long long范围内
对于每组数据,输出一行,合法的合并方法数
4
1 2 3 3
2
1既可以和前一个3合并,也可以和后一个3合并
给出使用stdio读入unsigned long long的方法:
unsigned long long ull;
scanf("%llu",&ull);
输出同理。
iostream无需指定类型,因此不做说明,直接读入/输出即可。