题解:

当奇数

发现答案就是C(n,1)^2+C(n,3)^2+。。。C(n,n)^2

倒序相加,发现就是C(2n,n) 所以答案就是C(2n,n)/2

当偶数

好像并不会证

打表出来可以得到

2.当n为偶数且为4的倍数时,答案为C(2n,n)+C(n,n/2)/2

3.当n为偶数且不为4的倍数时,答案为C(2n,n)-C(n,n/2)/2

另外Claris告诉我在p较小时可以数位dp来求

先用lucas定理 C(n,m)=C(n%p,m%p)*C(n/p,m/p)

然后我们就可以把n表示成p进制

答案就是m在p进制下和对应n求C的乘积

然后我们可以数位dp这个东西

#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define rint register ll
#define IL inline
#define rep(i,h,t) for (rint i=h;i<=t;i++)
#define dep(i,t,h) for (rint i=t;i>=h;i--)
const ll p=
;
const ll mo=
;
const ll INF=1e18;
const ll N=2e6;
ll n,cnt=,a[],jc1[N],jc2[N],f[N][][];
void gcd(ll x,ll y,ll &a,ll &b)
{
if (y==)
{
a=; b=; return;
}
gcd(y,x%y,b,a);
b-=a*(x/y);
}
ll C(ll x,ll y)
{
if (x<y) return();
return jc1[x]*jc2[y]%p*jc2[x-y]%p;
}
void jf(ll &x,ll y)
{
x+=y;
if (x>p) x-=p;
}
int main()
{
cin>>n;
while (n) a[++cnt]=n%p,n/=p;
jc1[]=jc2[]=;
rep(i,,p)
{
jc1[i]=(jc1[i-]*i)%p;
jc1[i]=(jc1[i]+p)%p;
ll x,y;
gcd(i,p,x,y);
jc2[i]=(jc2[i-]*x)%p;
jc2[i]=(jc2[i]+p)%p;
}
f[cnt+][][]=;
dep(j,cnt,)
{
ll tmp1j=,tmp1o=;
rep(i,,a[j]-)
{
ll kk=C(a[j],i);
kk=(kk*kk)%mo;
if (i%)
jf(tmp1j,kk);
else jf(tmp1o,kk);
}
f[j][][]=(f[j+][][]*tmp1o%mo+f[j+][][]*tmp1j%mo)%mo;
f[j][][]=(f[j+][][]*tmp1j%mo+f[j+][][]*tmp1o%mo)%mo;
if (a[j]%) jf(tmp1j,); else jf(tmp1o,);
f[j][][]+=(f[j+][][]*tmp1o%mo+f[j+][][]*tmp1j%mo)%mo;
f[j][][]+=(f[j+][][]*tmp1j%mo+f[j+][][]*tmp1o%mo)%mo;
if (f[j+][][]) f[j][(+a[j])%][]=;
else f[j][a[j]%][]=;
}
ll ans=(f[][][]+f[][][])%mo;
cout<<ans<<endl;
}

最新文章

  1. Hive学习笔记(一)
  2. [WPF系列]-基础系列 Property Trigger, DataTrigger &amp; EventTrigger
  3. 第三个Sprint冲刺github 与最终 github
  4. STL 源码分析《1》---- list 归并排序的 迭代版本, 神奇的 STL list sort
  5. linux服务之ntp与chrony
  6. java动态代理复习
  7. MySQL 没有索引 锁全表
  8. TForm类
  9. 设计模式(4)--AbstractFactory(抽象工厂模式)--创建型
  10. 手机端rem适应
  11. SQL语句整理1
  12. Java基础学习笔记二十三 Java核心语法之反射
  13. 关于element-ui表单验证(自定义验证规则)
  14. vue computed、methods、watch的区别
  15. c# MD5及盐值加密
  16. 网络爬虫 - 真&#183;AC自动机
  17. ELK 安装与基本配置(一)
  18. 8、nginx和tengine简介
  19. 用C#二次封装虹软arcface
  20. python3-知识扩展扫盲易忘-zip的用法

热门文章

  1. 用VC进行64位编程
  2. PHP JSON 数据解析代码
  3. FFmpeg configure: rename cuda to ffnvcodec 2018-03-06
  4. jqueryui组件progressbar进度条和日期组件datepickers的简单使用
  5. 【原创】Linux基础之windows linux双系统
  6. 使用layui框架做分页
  7. Codeforces 1117G Recursive Queries [线段树]
  8. TCP和UDP的对比
  9. Confluence 6 系统运行信息中的 JVM 内存使用情况
  10. OC Swift中检查代码行数