思路:矩阵快速幂+中国剩余定理!!

查资料得到2个公式:

            1) B[n+p] = B[n] + B[n+1] mod p ;

            2) B[p^m+n] = m*B[n] + B[n+1] mod p .

用这两个都可以解决这个问题,第二个可以在0ms解决。

质因数分解95041567=31*37*41*43*47,用矩阵快速幂分别求出B[n]%p (p是95041567的质因子)的结果。

这样就得到5个同余等式,在用中国剩余定理求解既可。

代码如下:

 #include <iostream>
#include <cstring>
#include <cstdio>
#define M 51
#define mod 95041567
#define ll __int64
using namespace std;
int p[]={,,,,},a[],bell[M][M];
struct Mat
{
int m[M][M];
};
Mat Mul(Mat a,Mat b,int n)
{
Mat ans;
for(int i=;i<n;i++)
for(int j=;j<n;j++){
ans.m[i][j]=;
for(int k=;k<n;k++)
ans.m[i][j]+=a.m[i][k]*b.m[k][j];
ans.m[i][j]%=n;
}
return ans;
}
int Pow(int n,int m)
{
Mat ans,a;
memset(ans.m,,sizeof(ans.m));
memset(a.m,,sizeof(a.m));
a.m[][m-]=a.m[][m-]=;
for(int i=;i<m-;i++) a.m[i+][i]=;
for(int i=;i<m;i++) ans.m[][i]=bell[i][i]%m;
while(n){
if(n&) ans=Mul(ans,a,m);
n>>=;
a=Mul(a,a,m);
}
return ans.m[][];
}
void init()
{
int i,j;
bell[][]=;bell[][]=;
for(i=;i<M;i++){
bell[i][]=bell[i-][i-];
for(j=;j<=i;j++) bell[i][j]=(bell[i][j-]+bell[i-][j-])%mod;
}
}
void gcd_extend(int a,int b,ll &x,ll &y)
{
if(b==){
x=;y=;
return ;
}
gcd_extend(b,a%b,x,y);
ll t=x;
x=y;
y=t-a/b*y;
}
int china()
{
ll ans=,x,y;
for(int i=;i<;i++){
int t=mod/p[i];
gcd_extend(t,p[i],x,y);
ans=(ans+a[i]*t*((x%p[i]+p[i])%p[i]))%mod;
}
return ans;
}
int main(){
int t,n;
init();
scanf("%d",&t);
while(t--){
scanf("%d",&n);
for(int i=;i<;i++)
a[i]=Pow(n,p[i]);
printf("%d\n",china());
}
return ;
}

hdu 4767 Bell的更多相关文章

  1. HDU 4767 Bell(矩阵+中国剩余定理)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4767 题意:给出n.求n有多少种划分集合的方式,即bell(n) 思路: #include <i ...

  2. 2013长春网赛1009 hdu 4767 Bell(矩阵快速幂+中国剩余定理)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4767 题意:求集合{1, 2, 3, ..., n}有多少种划分情况bell[n],最后结果bell[ ...

  3. HDU 4767——Bell

    昨天比赛被虐的这个题目. 今天听斌牛讲过他的思路后就A掉了. 题目的意思是要你求出bell数的第n项对95041567取模. 首先,95041567=31*37*41*43*47: 然后取模就是先分别 ...

  4. HDU 4767

    昨晚苦恼了一晚,因为即将大三了,必须要准备实习什么的事了.一般都会去公司实习吧,但是看看自己的简历,实在拿不出手,因为大一大二都在搞ACM(虽然真正搞的只有大二一年),但却没有什么成绩,又不愿意做项目 ...

  5. Bell(hdu4767+矩阵+中国剩余定理+bell数+Stirling数+欧几里德)

    Bell Time Limit:3000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status  ...

  6. Bell(矩阵快速幂+中国剩余定理)

    Bell Time Limit:3000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status  ...

  7. hdu 5445 Food Problem 多重背包

    Food Problem Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5 ...

  8. hdu 5445 多重背包

    Food Problem Time Limit: 3000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)To ...

  9. HDU 2512 一卡通大冒险(第二类斯特林数+贝尔数)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2512 题目大意:因为长期钻研算法, 无暇顾及个人问题,BUAA ACM/ICPC 训练小组的帅哥们大部 ...

随机推荐

  1. ViewSwitcher使用范例

    一.简介 ViewSwitcher适用于两个视图带动画效果的切换.这里实现两个视图切换的功能,并附带滑屏效果. 二.截图 二.范例代码 带动画效果的切换视图一和视图二. xml <ViewSwi ...

  2. android开发分辨率问题解决方案

    dpi是什么呢?dpi是“dot per inch”的缩写,每英寸像素数.四种密度分类: ldpi (low), mdpi (medium), hdpi (high), and xhdpi (extr ...

  3. Swift给每个开发者赢取500万的机会!不看一生后悔。

    [导语] Swift的横空出世,很多有想法的人已经发现其中的蕴含的巨大商机,而很多新手却只是云里雾里,只知道大家最近讨论Swift很欢乐.内行看门道,外行看热闹,说的就是这个理.如果你能把swift用 ...

  4. My First Django Project (3) - Apache set up

    Holy moly!!!!因为漏了一下斜杠,害我反复调试了2,3天,无法读取static 文件,一直找不出原因,后来在apache的error.log中发现了原因. 1. 下载了apache 2.4, ...

  5. UITableView swift

    // // ViewController.swift // UILabelTest // // Created by mac on 15/6/23. // Copyright (c) 2015年 fa ...

  6. UIAlertControl swift

    let alertController = UIAlertController(title: "开始!", message: "游戏就要开始,你准备好了吗?", ...

  7. Photoshop/PS中如何写维吾尔语等语言 乱码

    在新疆的朋友都了解很多标语上面都会有汉语.维语等两种语言.有很多维吾尔语.哈萨克语.柯尔克孜语等语言 要在PS 里进行设计处理,这时在Photoshop中进行设计时文字粘贴进来后出现不正常是乱码形式. ...

  8. Ubuntu 14.04安装配置NFS服务器

    (一)安装NFS服务器1.1-安装Ubuntu nfs服务器端: sudo apt-get install nfs-kernel-server 1.2-安装nfs的客户端: sudo apt-get ...

  9. C++中数组求偏移量计算公式

    已知数组:type A[10][5]A[0][0] --A[8][4]面试常考:数组定义A[0....x][0...y]已知A[m][n] --求A[k][l]的地址:    &A[m][n] ...

  10. 如何设置potplayer播放时总在最前端

    1.测试平台:potplayer 64位 2.步骤:在播放器界面上点击右键->选项->基本->最前端方式-选播放视频时在最前端(或是总在最前端) 3.选择:基本->最前端方式- ...