计蒜客 遗失的支付宝密码(困难)

来源:互联网 发布:阿里巴巴好还是淘宝好 编辑:程序博客网 时间:2024/04/28 21:10

某用户忘记了支付宝的登录密码,他只记得自己的密码满足以下几个条件:

  1. 密码中最多有 mm 种不同的字符;

  2. 密码的最大长度为 nn,但不能为空;

  3. 密码的任意一个前缀都 不是 一个 squaresquaresquaresquare 的定义如下:

    a. 字符串的长度 ll 是偶数;

    b. 字符串的长度为 \frac{l}{2}2l 的前缀和长度为 \frac{l}{2}2l 的后缀相同。

比如,abab 是一个 squaresquare,而 abba 则不是。

请问符合条件的密码有多少个。因为数量很多,只需要输出总个数对 2^{32}232 取模的结果即可。

输入格式

输入第一行包含两个整数 n,m(n,m \geq 1)n,m(n,m1)nn 为密码的最大长度,密码中最多有 mm 种不同的字符。

对于简单版本:n \leq 5n5m \leq 10m10

对于中等版本:n \leq 40n40m \leq 10^9m109

对于困难版本:n \leq 100n100m \leq 10^9m109

输出格式

输出一个整数,表示满足条件的密码数量,结果对 2^{32}232 取模。

样例输入1

3 2

样例输出1

8

样例输入2

4 5

样例输出2

605

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

容斥原理+打表~

居然可以用容斥原理,原来还以为是字符串之类的……

square相当于是重复子串,最多有n/2种,所以我们用容斥来做,ans=没有square-一个square+两个square-...

其中,容斥的系数可以打表得到。我的是复制的网上的,感觉这是一个坑啊QAQ

unsigned int输出是%u~


#include<cstdio>#include<iostream>using namespace std;int n,m,c[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};unsigned int pow[101],ans;int main(){scanf("%d%d",&n,&m);pow[0]=1;ans=m;for(int i=1;i<=n;i++) pow[i]=pow[i-1]*m;for(int i=1;i<=(n>>1);i++){int now=0;for(int j=1;j<=(i<<1);j++) now+=c[i][j]*pow[j];ans+=now;if((i<<1|1)<=n) ans+=now*m;}printf("%u\n",ans);return 0;}


原创粉丝点击