http://acm.hdu.edu.cn/showproblem.php?pid=4602

输入 n 和 k

首先 f(n)中k的个数 等于 f(n-1) 中 k-1的个数

最终等于 f(n-k+1) 中 1 的个数

舍 s(n) = f(n) + f(n-1) + ....+ f(1)

则 f(n) = s(n) - s(n-1)

由于 s(n) = s(n-1) + 2^(n-2) + s(n-1) = 2*(s(n-1)) + 2^(n-2)

= 2^(n-1) + (n-1)*2^(n-2)

       = (n+1)*2^(n-2)

代码:

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<string>
  4. #include<cstring>
  5. #include<cmath>
  6. #include<set>
  7. #include<map>
  8. #include<stack>
  9. #include<vector>
  10. #include<algorithm>
  11. #include<queue>
  12. #include<stdexcept>
  13. #include<bitset>
  14. #include<cassert>
  15. #include<deque>
  16. #include<numeric>
  17.  
  18. using namespace std;
  19.  
  20. typedef long long ll;
  21. typedef unsigned int uint;
  22. const double eps=1e-12;
  23. const int INF=0x3f3f3f3f;
  24. const ll MOD=1000000007;
  25. ll power(ll x,ll y)
  26. {
  27. ll tmp=1;
  28. while(y)
  29. {
  30. if((y&1))
  31. tmp=(tmp*x)%MOD;
  32.  
  33. x=(x*x)%MOD;
  34. y=y>>1;
  35. }
  36. return tmp;
  37. }
  38. int main()
  39. {
  40. //freopen("data.in","r",stdin);
  41. int T;
  42. cin>>T;
  43. while(T--)
  44. {
  45. ll n,m;
  46. cin>>n>>m;
  47. ll k=n-m+1;
  48. if(k<=0)
  49. {
  50. cout<<"0"<<endl;
  51. continue;
  52. }
  53. if(k==1)
  54. {
  55. cout<<"1"<<endl;
  56. continue;
  57. }
  58. if(k==2)
  59. {
  60. cout<<"2"<<endl;
  61. continue;
  62. }
  63. ll w1=(k+1)*power(2,k-2)%MOD;
  64. --k;
  65. ll w2=(k+1)*power(2,k-2)%MOD;
  66. cout<<(w1-w2+MOD)%MOD<<endl;
  67. }
  68. return 0;
  69. }

hdu 4602 Partition的更多相关文章

  1. hdu 4602 Partition 数学(组合-隔板法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4602 我们可以特判出n<= k的情况. 对于1<= k<n,我们可以等效为n个点排成 ...

  2. hdu 4602 Partition (概率方法)

    Partition Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  3. HDU 4602 Partition (矩阵乘法)

    Partition Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  4. hdu 4602 Partition 矩阵快速幂

    Partition Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Proble ...

  5. hdu 4602 Partition(快速幂)

    推公式+快速幂 公式有很多形式,可以写矩阵 1.前n-1项和的两倍+2的(n-2)次方,这个写不出啥 2.递推式:f(n)=2*f(n-1)+2的(n-3)次方 3.公式:2的(n-k-2)次方*(n ...

  6. hdu 4602 Partition(矩阵快速幂乘法)

    Problem Description Define f(n) , we have =+++ =++ =++ =++ =+ =+ =+ = totally ways. Actually, we wil ...

  7. 【HDU 4602】Partition

    题意 给你一个数n,把它写成几个正整数相加的形式,即把n拆开成若干段,把所有可能的式子里正整数 k 出现的次数取模是多少. 分析 特判 k>=n 的情况. k<n时:问题相当于n个点排一行 ...

  8. Partition HDU - 4602 (不知道为什么被放在了FFT的题单里)

    题目链接:Vjudge 传送门 相当于把nnn个点分隔为若干块,求所有方案中大小为kkk的块数量 我们把大小为kkk的块,即使在同一种分隔方案中的块 单独考虑,它可能出现的位置是在nnn个点的首.尾. ...

  9. HDU 4651 Partition 整数划分,可重复情况

    Partition Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

随机推荐

  1. MyISAM与InnoDB的索引实现

    1.MyISAM 使用B+Tree 作为索引结构,叶子节点的data存放指针,也就是记录的地址.对于主键索引和辅助索引都是一样的.2.InnoDB 也使用B+Tree作为索引结构,也别需要注意的是,对 ...

  2. linux简单配置

    lsof -i lsof -i:211.判断apache查找httpd路径: ps aux | grep httpd 结果:  /usr/local/apache/bin/httpd /usr/loc ...

  3. Redhat 6.4_联网 yum 配置

    步骤简述----------------------------------------------------------------- 1. 准备软件包 下载第三步的软件包即可.由于是联网yum配 ...

  4. gevent中如何实现长轮询

    浏览网页时,浏览器会传HTTP 请求到服务器,服务器会根据请求将网页的内容传给浏览器,但是在很多的情况下,使用者会需要看到最新的即时性资讯,例如观看股票市场行情,而在以前只能靠着重新载入网页才能获得最 ...

  5. js用ajax和jison在不同页面的php和html之间互相传值的方法

    <script> ;//这个id必须有,如果是空值,无法实现交互.有点郁闷.... var json; $.ajax({ url:"../member/wenzhanglishi ...

  6. 设置segue跳转页面

    第二种是利用ViewController与ViewController之间,拖拽添加segue 方法中提到的设置segue的identifier界面 在.h文件中声明 - (IBAction)goto ...

  7. js解码

    如代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...

  8. robotframework笔记2

    法文件和目录 层次结构安排测试用例构建如下: 在创建测试用例 测试用例文件 . 自动创建一个测试用例文件 测试套件 包含 测试用例文件. 一个目录包含测试用例文件形成一个更高级别的测试 套件. 这样一 ...

  9. HTML5自学笔记[ 11 ]canvas绘图基础1

    html5新增<canvas>标签用于绘制图像,默认宽高是300*150,canvas的宽高需要在这里设置,在css中设置会有问题:设置的形状,如矩形,会等比缩放,而非设置的宽高. 在不支 ...

  10. HTML5自学笔记[ 5 ]JSON的新方法

    eval和JSON.parse的区别:eval:可以解析任何字符串为js:parse:只能解析JSON形式的字符串变为js(更安全). json格式的字符串中的属性名必须加双引号“”. stringi ...