美丽的IP地址 (ipaddress.*)

美丽的IP地址 (ipaddress.*)

【题目描述】
该问题使用简化的TCP/IP地址模型,请仔细阅读描述。
IP地址是32位整数,表示为一组四位十进制8位整数(没有前导零),用逗号分隔。例如,记录0.255.1.123显示了正确的IP地址,记录为0.256.1.123和0.255.1.01则是不正确的。
我们的英雄Polycarpus仍然在一些大公司担任系统管理员。他喜欢漂亮的IP地址。为了检查某个IP地址是否美观,他应该做如下操作:
1.写出一行四位8位的IP地址,没有逗号;
2.检查结果字符串是否为回文。
让我们提醒你回文是一个字符串,从右到左,从左到右。
例如,IP地址12102.20.121和0.3.14130是漂亮的(如字符串“1210220121”和“0314130”是回文),IP地址1.20.20.1和100.4.4.1不是。
Pulycarpus希望找到所有具有给定数字集合的漂亮IP地址。集合中的每个数字必须至少在IP地址中出现一次。IP地址不能包含任何其他数字。帮助他应付这项艰巨的任务。

【输入】
第一行一个整数n(1<=n<=10)表示。
第二行有n个数字,表示可用的数字。
输入数据保证这n个数字不会重复。

【输出】
一个整数k,表示所有美丽的ip地址总数。

【输入样例1】
6
0 1 2 9 8 7

【输出样例1】
6
(78.190.209.187
79.180.208.197
87.190.209.178
89.170.207.198
97.180.208.179
98.170.207.189)

【输入样例2】
1
4

【输出样例2】
16
(4.4.4.4
4.4.4.44
4.4.44.4
4.4.44.44
4.44.4.4
4.44.4.44
4.44.44.4
4.44.44.44
44.4.4.4
44.4.4.44
44.4.44.4
44.4.44.44
44.44.4.4
44.44.4.44
44.44.44.4
44.44.44.44)

【数据范围】
对于10%数据,保证n=1,可用数字为1或2。
对于50%的数据,保证IP地址中不含0。
对于100%的数据,ai中可能含有任意数字。