计蒜之道2016 遗失的支付宝密码 解题报告

11 篇文章 0 订阅
4 篇文章 0 订阅

感觉这题好厉害。。

我考试的时候一直在想kmp、sa之类的,完全想偏了。。想到容斥也没有想到可以这么搞。
注意到其实square说的是字符之间的相等关系。所以如果我们考虑至少有哪几个位置是square,那么就可以求出字符串中有几种不同的字符,那么方案数就是 m 了。至于字符种数,显然可以通过并查集求出来。
这样时间复杂度是 O(n22n2log2n) ,就可以做n=40的点了。

而更神奇的地方在于不同的字符相等关系的数量非常少,n=100的时候只有几万!所以我们就可以对每种相等关系dp它的容斥系数。这样时间复杂度大约是 O(n3100000log2n) 的,但其实跑得挺快的。。100的话大约需要十几秒吧。
这样似乎还是A不了,但是注意到其实我们可以按照字符串长度和不同种字符数量打表,这样就搞定啦!
代码:

#include<cstdio>
int cnt[51][101]={1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,1,1,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,2,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,1,1,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,-1,0,2,0,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,-3,0,-1,0,0,1,1,0,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,-3,0,-1,1,1,0,1,0,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,-1,0,-1,0,-3,0,0,2,0,0,1,0,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,-1,-1,-1,-1,0,-3,1,1,1,0,0,1,0,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,-1,-1,-2,-1,-1,0,-2,2,0,1,0,0,1,0,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,0,0,1,-1,-2,-2,-1,-1,1,-1,1,0,1,0,0,1,0,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,1,0,0,-1,1,-2,-2,-2,-1,0,2,-2,1,0,1,0,0,1,0,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,2,0,0,-1,-1,0,-2,-2,-2,0,1,1,-2,1,0,1,0,0,1,0,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-3,6,1,1,-1,2,0,-1,-1,-2,0,-2,-2,-1,1,0,1,-2,1,0,1,0,0,1,0,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-2,2,1,6,-1,0,-1,2,-1,-1,-2,-2,0,-2,-1,0,0,0,1,-2,1,0,1,0,0,1,0,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-4,4,0,4,0,5,-2,0,-1,1,-1,-2,-2,-2,0,-1,0,-1,0,0,1,-2,1,0,1,0,0,1,0,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-4,4,-2,5,1,2,0,4,-2,0,-2,1,-2,-2,-2,-2,1,0,-1,-1,0,0,1,-2,1,0,1,0,0,1,0,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-7,7,-3,6,-2,5,0,2,-1,4,-2,-1,-2,0,-2,-2,-2,-1,2,-1,-1,-1,0,0,1,-2,1,0,1,0,0,1,0,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-5,0,-1,9,-3,5,-1,4,0,1,-1,4,-3,-1,-3,0,-2,-2,-1,0,1,-1,-1,-1,0,0,1,-2,1,0,1,0,0,1,0,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-8,4,-2,3,1,8,-5,7,-2,4,-1,1,-1,3,-3,-2,-3,0,-2,-1,0,-1,1,-1,-1,-1,0,0,1,-2,1,0,1,0,0,1,0,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-7,0,-4,8,0,4,-1,7,-3,6,-2,3,-1,1,-2,3,-4,-2,-3,0,-1,0,-1,-1,1,-1,-1,-1,0,0,1,-2,1,0,1,0,0,1,0,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-7,0,-4,3,-1,9,0,3,-2,9,-4,6,-3,3,-1,0,-2,2,-4,-2,-3,1,0,-1,-1,-1,1,-1,-1,-1,0,0,1,-2,1,0,1,0,0,1,0,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-7,-2,-1,0,-1,6,-1,8,0,2,0,8,-4,5,-3,3,-2,0,-3,2,-4,-2,-2,2,-1,-1,-1,-1,1,-1,-1,-1,0,0,1,-2,1,0,1,0,0,1,0,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-7,-4,-2,2,0,2,1,5,-1,8,-1,4,-1,8,-5,5,-3,2,-2,-1,-3,2,-4,-1,-1,1,-1,-1,-1,-1,1,-1,-1,-1,0,0,1,-2,1,0,1,0,0,1,0,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-8,-3,-3,-1,1,3,1,3,1,5,-1,7,1,3,-1,7,-5,5,-4,2,-3,-1,-3,2,-3,0,-2,1,-1,-1,-1,-1,1,-1,-1,-1,0,0,1,-2,1,0,1,0,0,1,0,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-5,-7,-5,0,1,1,2,3,1,4,1,5,-2,9,0,3,-2,7,-5,4,-4,1,-3,-1,-3,3,-2,-1,-2,1,-1,-1,-1,-1,1,-1,-1,-1,0,0,1,-2,1,0,1,0,0,1,0,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-7,-6,-3,-3,-2,3,3,1,1,4,2,4,1,4,0,8,0,2,-2,7,-6,4,-5,1,-3,-1,-2,4,-3,-1,-2,1,-1,-1,-1,-1,1,-1,-1,-1,0,0,1,-2,1,0,1,0,0,1,0,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-3,-11,-3,-4,-1,0,1,4,2,1,2,5,2,4,0,6,-1,8,-1,2,-2,6,-6,3,-5,1,-3,0,-1,3,-3,-1,-2,1,-1,-1,-1,-1,1,-1,-1,-1,0,0,1,-2,1,0,1,0,0,1,0,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-5,-11,1,-8,-1,-1,1,3,1,2,3,2,3,5,2,3,2,5,-1,7,-1,2,-3,6,-7,3,-5,1,-2,1,-2,3,-3,-1,-2,1,-1,-1,-1,-1,1,-1,-1,-1,0,0,1,-2,1,0,1,0,0,1,0,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,-18,-2,-7,4,-7,2,1,3,2,0,3,4,3,3,5,1,5,1,5,-2,7,-1,1,-3,5,-7,3,-5,2,-1,0,-2,3,-3,-1,-2,1,-1,-1,-1,-1,1,-1,-1,-1,0,0,1,-2,1,0,1,0,0,1,0,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-11,-5,-13,0,-2,4,-4,3,2,3,1,1,4,5,3,3,4,3,4,1,4,-2,7,-2,1,-4,5,-7,3,-4,3,-2,0,-2,3,-3,-1,-2,1,-1,-1,-1,-1,1,-1,-1,-1,0,0,1,-2,1,0,1,0,0,1,0,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,-20,-2,-10,-1,-10,4,-2,7,-4,3,3,2,2,2,5,5,3,2,6,2,4,0,4,-2,6,-2,0,-4,5,-7,4,-3,2,-2,0,-2,3,-3,-1,-2,1,-1,-1,-1,-1,1,-1,-1,-1,0,0,1,-2,1,0,1,0,0,1,0,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,-18,3,-14,-5,-6,2,-6,4,0,6,-3,4,2,3,3,3,5,5,2,4,5,2,3,0,4,-3,6,-3,0,-4,5,-6,5,-4,2,-2,0,-2,3,-3,-1,-2,1,-1,-1,-1,-1,1,-1,-1,-1,0,0,1,-2,1,0,1,0,0,1,0,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,-23,-1,-16,6,-15,0,-4,6,-7,5,0,7,-2,3,3,4,4,3,5,4,4,3,5,1,3,0,3,-3,5,-3,0,-4,6,-5,4,-4,2,-2,0,-2,3,-3,-1,-2,1,-1,-1,-1,-1,1,-1,-1,-1,0,0,1,-2,1,0,1,0,0,1,0,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,-20,5,-21,1,-14,5,-10,2,0,4,-7,6,1,8,-3,4,4,5,4,3,4,6,3,3,4,1,3,-1,3,-4,5,-3,0,-3,7,-6,4,-4,2,-2,0,-2,3,-3,-1,-2,1,-1,-1,-1,-1,1,-1,-1,-1,0,0,1,-2,1,0,1,0,0,1,0,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,-29,5,-19,8,-22,6,-16,10,-8,5,-3,5,-6,7,2,7,-2,5,5,5,4,2,6,5,3,2,4,1,2,-1,2,-4,5,-3,1,-2,6,-6,4,-4,2,-2,0,-2,3,-3,-1,-2,1,-1,-1,-1,-1,1,-1,-1,-1,0,0,1,-2,1,0,1,0,0,1,0,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,-15,0,-26,3,-15,9,-18,4,-11,11,-6,3,-2,6,-5,8,1,8,-1,6,5,5,3,4,5,5,2,2,4,0,2,-2,2,-4,5,-2,2,-3,6,-6,4,-4,2,-2,0,-2,3,-3,-1,-2,1,-1,-1,-1,-1,1,-1,-1,-1,0,0,1,-2,1,0,1,0,0,1,0,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,-35,5,-16,7,-29,5,-13,13,-20,9,-11,12,-7,4,-1,7,-4,7,2,9,0,6,5,4,5,3,5,4,2,2,3,0,1,-2,2,-4,6,-1,1,-3,6,-6,4,-4,2,-2,0,-2,3,-3,-1,-2,1,-1,-1,-1,-1,1,-1,-1,-1,0,0,1,-2,1,0,1,0,0,1,0,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,-23,3,-29,3,-13,6,-25,6,-9,11,-16,8,-9,11,-6,5,0,8,-5,8,3,10,0,6,4,6,4,3,4,4,2,1,3,-1,1,-2,2,-3,7,-2,1,-3,6,-6,4,-4,2,-2,0,-2,3,-3,-1,-2,1,-1,-1,-1,-1,1,-1,-1,-1,0,0,1,-2,1,0,1,0,0,1,0,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,-26,11,-34,11,-32,7,-14,10,-24,10,-12,14,-16,10,-10,12,-5,6,1,7,-4,9,4,10,0,5,6,5,4,2,4,4,1,1,2,-1,1,-2,3,-2,6,-2,1,-3,6,-6,4,-4,2,-2,0,-2,3,-3,-1,-2,1,-1,-1,-1,-1,1,-1,-1,-1,0,0,1,-2,1,0,1,0,0,1,0,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,-25,7,-25,8,-29,6,-26,6,-10,11,-20,6,-10,15,-14,9,-9,13,-4,7,0,8,-3,10,4,10,-1,7,5,5,3,2,4,3,1,0,2,-1,1,-1,4,-3,6,-2,1,-3,6,-6,4,-4,2,-2,0,-2,3,-3,-1,-2,1,-1,-1,-1,-1,1,-1,-1,-1,0,0,1,-2,1,0,1,0,0,1,0,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,-38,14,-29,12,-33,15,-33,12,-27,10,-9,14,-25,9,-9,17,-15,10,-8,14,-3,6,1,9,-2,10,4,9,1,6,5,4,3,2,3,3,0,0,2,-1,2,0,3,-3,6,-2,1,-3,6,-6,4,-4,2,-2,0,-2,3,-3,-1,-2,1,-1,-1,-1,-1,1,-1,-1,-1,0,0,1,-2,1,0,1,0,0,1,0,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,36,-19,12,-42,14,-25,5,-27,12,-27,11,-23,10,-7,10,-22,10,-7,16,-14,11,-7,15,-4,7,2,10,-2,10,3,11,0,6,4,4,3,1,3,2,0,0,2,0,3,-1,3,-3,6,-2,1,-3,6,-6,4,-4,2,-2,0,-2,3,-3,-1,-2,1,-1,-1,-1,-1,1,-1,-1,-1,0,0,1,-2,1,0,1,0,0,1,0,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,0,0,46,-33,18,-32,16,-43,15,-30,12,-30,18,-28,15,-24,11,-10,13,-21,12,-8,17,-13,12,-6,14,-3,8,3,10,-2,9,5,10,0,5,4,4,2,1,2,2,0,0,3,1,2,-1,3,-3,6,-2,1,-3,6,-6,4,-4,2,-2,0,-2,3,-3,-1,-2,1,-1,-1,-1,-1,1,-1,-1,-1,0,0,1,-2,1,0,1,0,0,1,0,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,0,0,47,-25,22,-45,15,-28,13,-40,9,-22,9,-24,17,-25,13,-22,8,-7,14,-19,11,-7,18,-12,13,-7,15,-2,9,3,10,-3,11,4,10,-1,5,4,3,2,0,2,2,0,1,4,0,2,-1,3,-3,6,-2,1,-3,6,-6,4,-4,2,-2,0,-2,3,-3,-1,-2,1,-1,-1,-1,-1,1,-1,-1,-1,0,0,1,-2,1,0,1,0,0,1,0,1,0,0,0,-1,-1,1,0,0,0,0,0,0,0,54,-28,22,-38,22,-48,16,-31,18,-46,17,-25,15,-26,19,-26,15,-25,11,-6,16,-20,12,-6,19,-11,12,-6,16,-1,9,3,9,-1,10,4,9,-1,5,3,3,1,0,2,2,1,2,3,0,2,-1,3,-3,6,-2,1,-3,6,-6,4,-4,2,-2,0,-2,3,-3,-1,-2,1,-1,-1,-1,-1,1,-1,-1,-1,0,0,1,-2,1,0,1,0,0,1,0,1,0,0,0,-1,-1,1,0,0,0,0,0,52,-21,25,-42,22,-34,13,-46,15,-27,13,-38,14,-19,12,-25,19,-24,12,-22,12,-4,15,-19,13,-5,20,-12,13,-5,17,-1,9,2,11,-2,10,3,9,-1,4,3,2,1,0,2,3,2,1,3,0,2,-1,3,-3,6,-2,1,-3,6,-6,4,-4,2,-2,0,-2,3,-3,-1,-2,1,-1,-1,-1,-1,1,-1,-1,-1,0,0,1,-2,1,0,1,0,0,1,0,1,0,0,0,-1,-1,1,0,0,0,59,-26,26,-35,21,-43,26,-43,15,-47,20,-32,21,-41,19,-23,14,-25,21,-27,15,-21,14,-5,16,-18,14,-4,19,-11,14,-4,17,-1,8,4,10,-2,9,3,9,-2,4,2,2,1,0,3,4,1,1,3,0,2,-1,3,-3,6,-2,1,-3,6,-6,4,-4,2,-2,0,-2,3,-3,-1,-2,1,-1,-1,-1,-1,1,-1,-1,-1,0,0,1,-2,1,0,1,0,0,1,0,1,0,0,0,-1,-1,1};
int main(){
    int n,m;
    int power[105];
    power[0]=1;
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;++i)power[i]=power[i-1]*m;
    int ans=0;
    for(int i=1,tmp=1;i<=n;++i)
        if(i&1)ans+=tmp*m;
        else{
            tmp=0;
            for(int j=1;j<=i;++j)tmp+=power[j]*cnt[i>>1][j];
            ans+=tmp;
        }
    printf("%u\n",ans);
}

总结:
①字符串的题也不一定非要用字符串算法/数据结构嘛。可以直接考虑字符间的相等/不等关系。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值