题目大意
给定一个只包含数字的字符串,找出这个字符串重新排列组合后,能组成多少种不同的平方数。
解题思路
一个 131313 位数字,最大为 999999999999999999999999999999999999999 ,打表发现 101410^{14}1014 以内的平方数有 316227831622783162278 个。
所以我们可以先预处理出 101410^{14}1014 以内所有的平方数,再对这些平方数逐一检查是否可以被给定字符串组成。
在检查时,我们只需要判断 111 ~ 999 的数字个数是否完全相等,并且给定字符串 000 的个数要大于等于平方数的 000 的个数。
参考答案