问题1221--IP地址

1221: IP地址

[命题人 : ]
时间限制 : 1.000 sec  内存限制 : 128 MB

题目描述



Miaoyao正在学习计算机网络。


众所周知,在计算机网络中会使用IP地址标识设备在网络中的位置。IPv4协议中,IP地址为一个32位的二进制数,通常使用点分十进制的形式描述,即每8个二进制位为一节,不同节之间使用"."分开,每一节转化为十进制表示。

一个子网包含一段连续的IP地址范围。具体来说,每个子网可以用网络段位数\(k\)与网络地址表示。如果网络段位数为\(k\),那么网络地址除前\(k\)位以外均为0。只要是前\(k\)位与网络地址相同的IP地址均属于这个子网。例如,家用路由器通常会使用192.168.0.0/24这个子网,即网络地址为192.168.0.0,并使用前24位来确定子网。那么,192.168.0.0至192.168.0.255都属于这一子网,而192.168.1.0就不属于这一子网。


现在给出\(n\)个IP地址与一个子网,Miaoyao 想要知道有多少个IP地址属于这个子网。



输入

第一行一个整数n,表示IP地址个数。
第二行一个字符串,形如"网络地址/网络段位数",表示所给出的子网。网络段位数在1-31之间。
接下来n行,每行一个字符串,为一个点分十进制形式表示的IP地址。

输出

一个整数,表示属于这个子网的IP地址数

样例输入 Copy

4
194.85.160.176/29
194.85.160.177
194.85.160.183
194.85.160.178
194.85.160.193

样例输出 Copy

3

提示

本题为了表述的简单忽略了一些实际IPv4协议中的规则。
\(1\le n\le10000\)
保证所有输入数据合法。

Hint: C语言的格式化输入更适合用来求解本题