随笔分类 -  数学--组合

摘要:LL getInv(LL x) { LL ret = 1; x %= mod; for (int a = mod - 2; a; a /= 2, x = x * x % mod) if (a % 2 == 1) ret = ret * x % m... 阅读全文
posted @ 2014-07-23 20:29 _雨 阅读(218) 评论(0) 推荐(0) 编辑
摘要:链接也算是组合 以前按组合做过一次 忘记怎么做的了这次按dp写的 dp[i][j][g][k] 表示第i位为k(0|1)而且有j个1,g个0的情况数貌似写的麻烦了。。。这一类的题,进行逐位计算就可以 不过要很细心,边界处理 特殊情况处理什么的 。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include10 using namespace std;11 #define N 10000012 #define LL long long13 #define I. 阅读全文
posted @ 2014-04-04 21:36 _雨 阅读(227) 评论(0) 推荐(0) 编辑
摘要:链接计算0-9每一个数字出现的次数 逐位进行处理 对于每一位取几时依次算下组合的情况 注意0的情况需要特殊处理一下 因为0000 00 这样都是等于0的 前面的几位是多余的 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include10 using namespace std;11 #define N 10000012 #define LL long long13 #define INF 0xfffffff14 const double eps = 1e-. 阅读全文
posted @ 2014-04-04 21:32 _雨 阅读(259) 评论(0) 推荐(0) 编辑
摘要:链接题意从尾部找第一个非0的数 这样就可以考虑下怎样会形成0 这个都知道 只有因子2和因子5相遇会形成0 那这样可以先把所有的2和5先抽出来,这样就保证了其它的数相乘就不会再出现0了 这样就可以转换成尾数相乘的结果 当然可能2的个数会剩余 这一部分留到最后去算step1 抽出所有的5和2 n!里因子x的个数 求法: n/x+gn(n/x);这样结果就为1 3 7 9 之一 这样就需要求一下尾部3,,7,9的出现的次数,并且可以发现它们都是以4为周期的 包括2step2 尾部3 7 9出现的次数 f[n] + find(n/2) 因为抽走了2 x出现的次数g[n][x] = n/10+(n%10 阅读全文
posted @ 2014-04-03 23:51 _雨 阅读(166) 评论(0) 推荐(0) 编辑
摘要:链接好久没写这种逐位计数的了。先统计出总的数 ,s-n+1,倒着计算的 ,感觉倒着比较符合计算方式,总数为15*A(15,i) (1==n的 就找到了 该字符串的长度 然后再逐位进行找下一位 首位不为0. 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include10 using namespace std;11 #define N 10000012 #define LL long long13 #define INF 0xfffffff14 const . 阅读全文
posted @ 2014-04-03 23:21 _雨 阅读(196) 评论(0) 推荐(0) 编辑
摘要:一直不大喜欢写题解 尤其做的很纠结的题目 终于纠结完了 就想代码一贴完事。缺点一:理解不透彻;二:很容易忘;三:不利于以后回顾复习;四:写代码容易乱;以这个专题为开始吧 把一些题目总结一下 解释一下 同一类型的放在一块 。hdu1465不容易系列之一(错排公式)虽说大家知道 还是把这个小小说一下来自百度百科当n个编号元素放在n个编号位置,元素编号与位置编号各不对应的方法数用D(n)表示,那么D(n-1)就表示n-1个编号元素放在n-1个编号位置,各不对应的方法数,其它类推.第一步,把第n个元素放在一个位置,比如位置k,一共有n-1种方法;第二步,放编号为k的元素,这时有两种情况:⑴把它放到位置 阅读全文
posted @ 2014-03-02 22:27 _雨 阅读(232) 评论(0) 推荐(0) 编辑
摘要:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2164贴一篇写组合数求mod比较好的帖子这里的n,m比较小 直接利用公式递推求解即可c(n,m) =c(n - 1,m) + c(n – 1, m – 1) 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include10 using namespace std;11 #define LL long long1 阅读全文
posted @ 2014-01-18 17:06 _雨 阅读(176) 评论(0) 推荐(0) 编辑
摘要:链接对于组合数学是一点也不了解讲解重要一点 要知道一个循环里最少的交换次数是m-1次 、 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define N 10010 8 #define INF 0xfffffff 9 int a[N],b[N],po[N*10],vis[N*10];10 int main()11 {12 int i,n;13 while(scanf("%d",&n)!=EOF)14 {15 memset(vis,0,si... 阅读全文
posted @ 2013-09-19 09:45 _雨 阅读(201) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示