1644:【例 4】佳佳的 Fibonacci

时间限制: 1000 ms         内存限制: 524288 KB

sol:搞了大概一个多小时什么结果都没,被迫去看题解,感觉自己菜到家了qaq

大家一起膜henry_y神仙

  1. /*
  2. 原式
  3. f[i] = f[i-1]+f[i-2]
  4. T[n] = f[1]+f[2]*2+f[3]*3+...+f[n]*n
  5.  

  6. S[n] = f[1]+f[2]+f[3]+...+f[n]
  7. n*S[n] = n*f[1]+n*f[2]+n*f[3]+...+n*f[n]

  8. --> P[n] = n*S[n]-T[n]
  9. --> P[n] = (n-1)*f[1]+(n-2)*f[2]+...+(n-n)*f[n]
  10. 因为
  11. --> P[n-1] = (n-1)*S[n]-T[n-1]
  12. --> P[n-1] = (n-2)*f[1]+(n-3)*f[2]+...+(n-1-(n-1))*f[n-1]

  13. --> S[n-1] = f[1]+f[2]+f[3]+....+f[n-1]
  14. 所以
  15. P[n]=P[n-1]+S[n-1]
  16. */
  1. /*
  2. P[i] S[i] f[i] f[i-1]
  3.  
  4. 1 0 0 0
  5. 1 1 0 0
  6. 0 1 1 1
  7. 0 1 1 0
  8. */

矩阵

Ps:思路要打开

  1. /*
  2. f[i] = f[i-1]+f[i-2]
  3. T[n] = f[1]+f[2]*2+f[3]*3+...+f[n]*n
  4. S[n] = f[1]+f[2]+f[3]+...+f[n]
  5. n*S[n] = n*f[1]+n*f[2]+n*f[3]+...+n*f[n]

  6. --> P[n] = n*S[n]-T[n]
  7. --> P[n] = (n-1)*f[1]+(n-2)*f[2]+...+(n-n)*f[n]
  8. 因为
  9. --> P[n-1] = (n-1)*S[n]-T[n-1]
  10. --> P[n-1] = (n-2)*f[1]+(n-3)*f[2]+...+(n-1-(n-1))*f[n-1]

  11. --> S[n-1] = f[1]+f[2]+f[3]+....+f[n-1]
  12. 所以
  13. P[n]=P[n-1]+S[n-1]
  14.  
  15. P[i] S[i] f[i] f[i-1]
  16.  
  17. 1 0 0 0
  18. 1 1 0 0
  19. 0 1 1 1
  20. 0 1 1 0
  21. */
  22. #include <bits/stdc++.h>
  23. using namespace std;
  24. typedef long long ll;
  25. inline ll read()
  26. {
  27. ll s=;
  28. bool f=;
  29. char ch=' ';
  30. while(!isdigit(ch))
  31. {
  32. f|=(ch=='-'); ch=getchar();
  33. }
  34. while(isdigit(ch))
  35. {
  36. s=(s<<)+(s<<)+(ch^); ch=getchar();
  37. }
  38. return (f)?(-s):(s);
  39. }
  40. #define R(x) x=read()
  41. inline void write(ll x)
  42. {
  43. if(x<)
  44. {
  45. putchar('-'); x=-x;
  46. }
  47. if(x<)
  48. {
  49. putchar(x+''); return;
  50. }
  51. write(x/);
  52. putchar((x%)+'');
  53. return;
  54. }
  55. #define W(x) write(x),putchar(' ')
  56. #define Wl(x) write(x),putchar('\n')
  57. ll n,nn,Mod;
  58. ll ans[][],power[][],a[][],c[][];
  59. inline void Ad(ll &X,ll Y)
  60. {
  61. X+=Y;
  62. X-=(X>=Mod)?Mod:;
  63. return;
  64. }
  65. int main()
  66. {
  67. int i,j,k;
  68. nn=n=read(); n--; R(Mod);
  69. ans[][]=ans[][]=;
  70. for(i=;i<=;i++) power[i][i]=;
  71. a[][]=a[][]=a[][]=a[][]=a[][]=a[][]=a[][]=a[][]=;
  72. while(n)
  73. {
  74. if(n&)
  75. {
  76. memset(c,,sizeof c);
  77. for(i=;i<=;i++) for(j=;j<=;j++) for(k=;k<=;k++)
  78. {
  79. Ad(c[i][j],power[i][k]*a[k][j]%Mod);
  80. }
  81. memmove(power,c,sizeof power);
  82. }
  83. memset(c,,sizeof c);
  84. for(i=;i<=;i++) for(j=;j<=;j++) for(k=;k<=;k++)
  85. {
  86. Ad(c[i][j],a[i][k]*a[k][j]%Mod);
  87. }
  88. memmove(a,c,sizeof a);
  89. n>>=;
  90. }
  91. memset(c,,sizeof c);
  92. for(i=;i<=;i++) for(j=;j<=;j++) for(k=;k<=;k++)
  93. {
  94. Ad(c[i][j],ans[i][k]*power[k][j]%Mod);
  95. }
  96. memmove(ans,c,sizeof ans);
  97. Wl((ans[][]*nn%Mod-ans[][]+Mod)%Mod);
  98. return ;
  99. }
  100. /*
  101. input
  102. 5 5
  103. output
  104. 1
  105. */

一本通1644【例 4】佳佳的 Fibonacci的更多相关文章

  1. 佳佳的Fibonacci

    #include<cstdio> #include<cstring> #include<iostream> #include<cmath> #inclu ...

  2. 佳佳的 Fibonacci

    佳佳的 Fibonacci \(f_n=f_{n-1}+f_{n-2},f_1=f_2=1\),求\(f_1+2f_2+3f_3+...+nf_nmod\ m,1≤n,m≤2^{31}-1\). 解 ...

  3. TYVJ P3407 佳佳的魔法照片 Label:语文很重要 语文很重要 语文很重要

    描述 佳佳的魔法照片(mphoto.pas\c\cpp) [题目背景] 佳佳的魔法照片(Magic Photo):如果你看过<哈利•波特>,你就会知道魔法世界里的照片是很神奇的.也许是因为 ...

  4. 【DFS】佳佳的魔法阵

    [vijos1284]佳佳的魔法阵 背景 也许是为了捕捉猎物(捕捉MM?),也许是因为其它原因,总之,佳佳准备设计一个魔法阵.而设计魔法阵涉及到的最关键问题,似乎就是那些带有魔力的宝石的摆放…… 描述 ...

  5. P1875 佳佳的魔法药水

    P1875 佳佳的魔法药水 题目描述 发完了 k 张照片,佳佳却得到了一个坏消息:他的 MM 得病了!佳佳和大家一样焦急 万分!治好 MM 的病只有一种办法,那就是传说中的 0 号药水 ……怎么样才能 ...

  6. 洛谷 P1875 佳佳的魔法药水

    P1875 佳佳的魔法药水 题目描述 发完了 k 张照片,佳佳却得到了一个坏消息:他的 MM 得病了!佳佳和大家一样焦急 万分!治好 MM 的病只有一种办法,那就是传说中的 0 号药水 --怎么样才能 ...

  7. 洛谷—— P1875 佳佳的魔法药水

    https://www.luogu.org/problemnew/show/1875 题目背景 发完了 k 张照片,佳佳却得到了一个坏消息:他的 MM 得病了!佳佳和大家一样焦急 万分!治好 MM 的 ...

  8. 「Vijos 1282」「OIBH杯NOIP2006第二次模拟赛」佳佳的魔法照片

    佳佳的魔法照片 背景 佳佳的魔法照片(Magic Photo):如果你看过<哈利·波特>,你就会知道魔法世界里的照片是很神奇的.也许是因为小魔法师佳佳长的太帅,很多人都找他要那种神奇的魔法 ...

  9. 「Vijos 1285」「OIBH杯NOIP2006第二次模拟赛」佳佳的魔法药水

    佳佳的魔法药水 背景 发完了k张照片,佳佳却得到了一个坏消息:他的MM得病了!佳佳和大家一样焦急万分!治好MM的病只有一种办法,那就是传说中的0号药水--怎么样才能得到0号药水呢?你要知道佳佳的家境也 ...

随机推荐

  1. P1359 租用游艇

    题目描述 长江游艇俱乐部在长江上设置了n 个游艇出租站1,2,…,n.游客可在这些游艇出租站租用游艇,并在下游的任何一个游艇出租站归还游艇.游艇出租站i 到游艇出租站j 之间的租金为r(i,j),1& ...

  2. calico 网络流量 过程 分析 apt-get install telnet

    1.calico node 容器在kubernetes中以DaemonSet 的方式运行,容器的网络模式为hostNetwor,与host共享网络栈,拥有相同的Ip和hostname 2.查看某个po ...

  3. [c.c.a.m.AgentManagerImpl] (AgentConnectTaskPool-39:ctx-c37090c5) Failed to handle host connection: java.lang.IllegalArgumentException: Can't add host: with h

    如果无法添加成功,/etc/redhat-release文件覆盖过去 cat /etc/redhat-release CentOS Linux release 7.1.1503 (Core)Red H ...

  4. 6-51单片机ESP8266学习-AT指令(8266TCP服务器--做自己的AndroidTCP客户端发信息给单片机控制小灯的亮灭)

    http://www.cnblogs.com/yangfengwu/p/8776712.html 先把源码和资料链接放到这里 链接: https://pan.baidu.com/s/1jpHZjW_7 ...

  5. C#委托+回调详解

    今天写不完,明天会接着写的,,,, 学习C#有一段时间了,不过C#的委托+回调才这两天才会用,以前只是知道怎么用.前面的一篇文章,函数指针,其实是为这个做铺垫的,说白了委托就相当于C语言中的函数指针, ...

  6. struts2_Interceptor

    题目要求:要求当未登录访问某些Action时,自动跳转到登录界面. 1. 2. 3. 4. 5.默认拦截器堆栈为defautStack,但一旦用户添加了拦截器,默认拦截器失效 6. 7. struts ...

  7. 校内模拟赛 Label

    题意: n个点m条边的无向图,有些点有权值,有些没有.边权都为正.给剩下的点标上数字,使得$\sum\limits_{(u,v)\in E}len(u,v) \times (w[u] - w[v]) ...

  8. Shiro安全框架学习笔记

    一.Shiro框架简单介绍 Apache Shiro是Java的一个安全框架,旨在简化身份验证和授权.Shiro在JavaSE和JavaEE项目中都可以使用.它主要用来处理身份认证,授权,企业会话管理 ...

  9. 利用JS实现一个简单的二级联动菜单

    前几天在看js的相关内容,所以就简单写了一个二级联动菜单.分享一下. <!DOCTYPE html> <html lang="en"> <head&g ...

  10. Frida----安装

    介绍 它是本机应用程序的 Greasemonkey,或者更多技术术语,它是一个动态代码检测工具包.它允许您将JavaScript或您自己的库的片段注入Windows,macOS,GNU / Linux ...