P3414 SAC#1 - 组合数

题目背景

本题由世界上最蒟蒻最辣鸡最撒比的SOL提供。

寂月城网站是完美信息教室的官网。地址:http://191.101.11.174/mgzd 。

题目描述

辣鸡蒟蒻SOL是一个傻逼,他居然觉得数很萌!

今天他萌上了组合数。现在他很想知道simga(C(n,i))是多少;其中C是组合数(即C(n,i)表示n个物品无顺序选取i个的方案数),i取从0到n所有偶数。

由于答案可能很大,请输出答案对6662333的余数。

输入输出格式

输入格式:

输入仅包含一个整数n。

输出格式:

输出一个整数,即为答案。

输入输出样例

输入样例#1: 复制

  1. 3
输出样例#1: 复制

  1. 4

说明

对于20%的数据,n <= 20;

对于50%的数据,n <= 1000;

对于100%的数据,n <= 1 000 000 000 000 000 000 (10^18)

排列组合(卢卡斯定理)能得50分、、

n的范围太大,数组开不开,因此就不能用lus定理了,我们应该在找一种做法

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<iostream>
  4. #include<algorithm>
  5. #define N 1000000
  6. #define mod 6662333
  7. #define ll long long
  8. using namespace std;
  9. int n,ans,jie[N];
  10. int read()
  11. {
  12. ,f=; char ch=getchar();
  13. ;ch=getchar();}
  14. +ch-',ch=getchar();
  15. return x*f;
  16. }
  17. ll qpow(ll a,ll b,ll p)
  18. {
  19. ll res=;
  20. while(b)
  21. {
  22. ) res=res*a%p;
  23. a=a*a%p;b>>=;
  24. }return res;
  25. }
  26. ll C(ll n,ll m,ll p)
  27. {
  28. ;
  29. ,p)%p;
  30. }
  31. ll Lus(ll n,ll m,ll p)
  32. {
  33. ) ;
  34. return Lus(n/p,m/p,p)*C(n%p,m%p,p);
  35. }
  36. int main()
  37. {
  38. n=read();jie[]=;
  39. ;i<=n;i++)
  40. jie[i]=1ll*jie[i-]*i%mod;
  41. ;i<=n;i+=)
  42. ans=(ans+Lus(n,i,mod))%mod;
  43. printf("%d",ans);
  44. ;
  45. }

50分卢卡斯定理

打表找规律

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<iostream>
  4. #include<algorithm>
  5. #define N 1000000
  6. #define mod 6662333
  7. #define ll long long
  8. using namespace std;
  9. int n,ans,jie[N];
  10. int read()
  11. {
  12. ,f=; char ch=getchar();
  13. ;ch=getchar();}
  14. +ch-',ch=getchar();
  15. return x*f;
  16. }
  17. ll qpow(ll a,ll b,ll p)
  18. {
  19. ll res=;
  20. while(b)
  21. {
  22. ) res=res*a%p;
  23. a=a*a%p;b>>=;
  24. }return res;
  25. }
  26. ll C(ll n,ll m,ll p)
  27. {
  28. ;
  29. ,p)%p;
  30. }
  31. ll Lus(ll n,ll m,ll p)
  32. {
  33. ) ;
  34. return Lus(n/p,m/p,p)*C(n%p,m%p,p);
  35. }
  36. int main()
  37. {
  38. jie[]=;
  39. ;i<;i++)
  40. jie[i]=1ll*jie[i-]*i%mod;
  41. ;n<=;n++)
  42. {
  43. ans=;
  44. ;i<=n;i+=)
  45. ans=(ans+Lus(n,i,mod))%mod;
  46. printf("%d %d\n",n,ans);
  47. }
  48. ;
  49. }

我们可以发现,ans=2^(n-1),因此用快速幂就可以搞定了

n输入的时候要用long long、、(老是RE。。。)

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<iostream>
  4. #include<algorithm>
  5. #define mod 6662333
  6. #define ll long long
  7. using namespace std;
  8. long long n;int ans;
  9. ll read()
  10. {
  11. ll x=,f=; char ch=getchar();
  12. ;ch=getchar();}
  13. +ch-',ch=getchar();
  14. return x*f;
  15. }
  16. int qpow(int a,ll b,int p)
  17. {
  18. ;
  19. while(b)
  20. {
  21. ) res=1ll*res*a%p;
  22. a=1ll*a*a%p;b>>=;
  23. }return res;
  24. }
  25. int main()
  26. {
  27. n=read();
  28. ans=qpow(,n-,mod);
  29. printf("%d",ans);
  30. ;
  31. }

洛谷——P3414 SAC#1 - 组合数的更多相关文章

  1. 洛谷P3414 SAC#1 - 组合数

    P3414 SAC#1 - 组合数 218通过 681提交 题目提供者ProjectWTA 标签 难度普及/提高- 时空限制1s / 128MB 提交  讨论  题解 最新讨论更多讨论 讨论区出bug ...

  2. P3414 SAC#1 - 组合数 题解

    https://www.luogu.org/problemnew/show/P3414(题目传送) 这道题提醒大家一定要认真审题.看清楚后发现n的数据范围稍微小于long long类型的范围(看不清被 ...

  3. P3414 SAC#1 - 组合数

    题目背景 本题由世界上最蒟蒻最辣鸡最撒比的SOL提供. 寂月城网站是完美信息教室的官网.地址:http://191.101.11.174/mgzd . 题目描述 辣鸡蒟蒻SOL是一个傻逼,他居然觉得数 ...

  4. 洛谷P4492 [HAOI2018]苹果树(组合数)

    题意 题目链接 Sol 有点自闭,.我好像对组合数一窍不通(~~~~) Orz shadowice // luogu-judger-enable-o2 #include<bits/stdc++. ...

  5. 洛谷——P1869 愚蠢的组合数

    P1869 愚蠢的组合数 题目描述 最近老师教了狗狗怎么算组合数,狗狗又想到了一个问题... 狗狗定义C(N,K)表示从N个元素中不重复地选取K个元素的方案数. 狗狗想知道的是C(N,K)的奇偶性. ...

  6. 洛谷 P2518 [HAOI2010]计数 (组合数)

    题面 luogu 题解 本来想练数位dp的,结果又忍不住写了组合数.. 去掉一个\(0\)可以看作把\(0\)移到前面去 那么题目转化为 \(n\)有多少个排列小于\(n\) 强制某一位比\(n\)的 ...

  7. 洛谷P3926 SAC E#1 - 一道不可做题 Jelly【模拟/细节】

    P3926 SAC E#1 - 一道不可做题 Jelly [链接]:https://www.luogu.org/problem/show?pid=3926 题目背景 SOL君(炉石主播)和SOL菌(完 ...

  8. 洛谷—— P1869 愚蠢的组合数

    https://www.luogu.org/problemnew/show/1869 题目描述 最近老师教了狗狗怎么算组合数,狗狗又想到了一个问题... 狗狗定义C(N,K)表示从N个元素中不重复地选 ...

  9. luogu P3414 SAC#1 - 组合数(组合数学)

    题意 求sigma(C(n,i))其中C是组合数(即C(n,i)表示n个物品无顺序选取i个的方案数),i取从0到n所有偶数. 由于答案可能很大,请输出答案对6662333的余数. (n<=101 ...

随机推荐

  1. Ant打jar包时,参数名被修改的问题

    https://blog.csdn.net/landehuxi/article/details/42678117 使用Ant打jar包后,发现jar包中的方法名会在前面自动添加了“param”前缀,导 ...

  2. javascript拖拽原理与简单实现方法[demo]

    美国人有一句常用的俗语—“Re-inventing the Wheel”,从字面上来解释就是“重新发明轮子”.可是轮子早已问世,再要去发明岂非劳而无功? 产品经理发下需求,实施者再到网上搜索代码,也许 ...

  3. HDU 1548 A strange lift (广搜)

    题目链接 Problem Description There is a strange lift.The lift can stop can at every floor as you want, a ...

  4. java 深度拷贝 复制 深度复制

    1.深度拷贝.复制代码实现 最近需要用到比较两个对象属性的变化,其中一个是oldObj,另外一个是newObj,oldObj是newObj的前一个状态,所以需要在newObj的某个状态时,复制一个一样 ...

  5. js 的function为什么可以添加属性

    (1) function person(){ this.name = 'Tom'; } (2) function person(){} person.name = 'Tom'; (3) functio ...

  6. JAVA Frame 响应窗口关闭事件

    /* * To change this license header, choose License Headers in Project Properties. * To change this t ...

  7. 查看服务器是否被DDOS攻击的方法

    伴随着现代互联网络快速发展,更加容易出现被攻击.尤其是ddos攻击已经不在是大网站需要关心的事情了.不少中小型企业,也在遭受ddos攻击.站长对ddos攻击不了解,所以网站被ddos攻击的时候,都不会 ...

  8. python开发第二十六天CMDB

    概要: 1.采集资产 2.API 一.资产采集 1.采集方式的配置 2.插件的定制 3.测试模式 4.错误日志(必须是行级的详细错误信息) 5.汇报数据-->遵循资产的唯一性 (1)只针对物理机 ...

  9. shell中的IFS和$*变量

    本文转载自http://blog.chinaunix.net/uid-22566367-id-381955.html 自我记录内容.在工程中遇到了相关内容的shell脚本.在此处记录 STRING1= ...

  10. python基础===discover函数介绍

    discover(start_dir,pattern='test*.py',top_level_dir=None) 找到指定目录下所有测试模块,并可递归查到子目录下的测试木块,只有匹配到的文件名才会被 ...