happy necklace

题意:一个项链是由红蓝两个珠子构成,项链不是环,是一条线,要求每一个素数长度红色珠子的个数大于等于蓝色珠子的个数,给你n个珠子问符合条件的项链的个数。

思路:一看取模就知道数很大,推规律,写出递推式。

1表示红色0表示蓝色

2

10 01 11  3

3

101 111 110 011  4

4

1011 1101 1110 0111 1111 0110   6

5

11111 11110 11101 11011 10111 01111 10110 01110 01101 9

6

111111 111110 111101 111011 110111 101111 011111 110110 101110 011110 101101 011101 011011  13

fi=fi-1+fi-3

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod=1e9+7;
struct matrix{ll m[5][5]; };
matrix mutil(matrix a,matrix b)
{matrix c; memset(c.m,0,sizeof(c.m));  for(int i=1;i<=3;i++) { for(int j=1;j<=3;j++) {for(int k=1;k<=3;k++) {
c.m[i][j]=(c.m[i][j]+a.m[i]  [k]*b.m[k][j])%mod;} c.m[i][j]%=mod; } }return c; }
matrix powmod(matrix a,ll k)
{ matrix ans;memset(ans.m,0,sizeof(ans.m));                   for(int i=1;i<=3;i++) ans.m[i][i]=1; while(k){ if(k&1){ ans=mutil(ans,a); k--;} k>>=1; a=mutil(a,a); }return ans;}
int main()
{ int t; ll n,res; scanf("%d",&t);while(t--)
{ scanf("%lld",&n);if(n==2) printf("3\n"); else if(n==3) printf("4\n"); else if(n==4) printf("6\n"); else {matrix a,b,c,d; a.m[1][1]=1;a.m[1][2]=0;a.m[1][3]=1; a.m[2][1]=1;a.m[2][2]=0;a.m[2][3]=0; a.m[3][1]=0;a.m[3][2]=1;a.m[3][3]=0; memset(c.m,0,sizeof(c.m)); c.m[1][1]=6;c.m[2][1]=4;c.m[3][1]=3; b=powmod(a,n-4); d=mutil(b,c); printf("%lld\n",d.m[1][1]); } }
}

Happy Necklace相关推荐

  1. HDU 5727 Necklace

    题目:Necklace 链接:http://acm.hdu.edu.cn/showproblem.php?pid=5727 题意:要用n个阳石和n个阴石来串一个项链(环状),规定阳石旁边只能是阴石,阴 ...

  2. HDU 5730 Shell Necklace(生成函数 多项式求逆)

    Shell Necklace 由题意可得f[n]=∑i=1na[i]f[n−i]f[n] = \sum\limits_{i = 1} ^{n} a[i] f[n - i]f[n]=i=1∑n​a[i] ...

  3. CF1361C. Johnny and Megan‘s Necklace(构造,欧拉回路,传递闭包)

    CF1361C. Johnny and Megan's Necklace Solution 真duliu,快做吐了... 刚开始想了一个假做法(但前面还是很真的). 假的做法大概是你发现这个东西具有传 ...

  4. UVa10054 The Necklace 欧拉回路

    如果图G中的一个路径包括每个边恰好一次,则路径称为欧拉路径. 如果一个回路是欧拉路径,则称为欧拉回路.(即起点终点相同的欧拉路) 有欧拉回路的称为欧拉图,有欧拉路径但无欧拉回路的称为半欧拉图. 无向图 ...

  5. HDU 5730 Shell Necklace

    HDU 5730 Shell Necklace 原题连接: http://acm.hdu.edu.cn/showproblem.php?pid=5730 闻题而来. 设组合成长度为 k k的方案数量为 ...

  6. Accepted Necklace HDU - 2660

    Accepted Necklace HDU - 2660 WA wa了两发又双叒叕是因为没读清楚题我裂开 AC代码 好家伙一手最low的dp竟然过了,我还一直不敢交hhhh #include < ...

  7. HDU-2660 Accepted Necklace

    GDUT 2020寒假训练 专题一 D 原题链接 HDU-2660 Accepted Necklace GDUT-专题1-D BFS/DFS 题目大意 有N个石头想要从中选出K个做成项链,每颗石头有自 ...

  8. USACO Section 1.2 Broken Necklace

    题目 题目分析 推的过程 需要避免的坑 整体代码 USACO的题解 题目 题目描述 输入描述 Line 1: N, the number of beads Line 2: a string of N ...

  9. Necklace(树状数组+离线操作)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3874 Necklace Time Limit: 15000/5000 MS (Java/Others) ...

最新文章

  1. python中带星号的参数,带有一个星号 2个星号
  2. 代码中的输入输出(重定向、文件流C/C++)
  3. Java实现自动生成Mysql数据库表实体类
  4. 皮一皮:藏头诗有时候也不能太藏...
  5. ZenHub已集成于GitHub企业版
  6. C#如何控制方法的执行时间,超时则强制退出方法执行
  7. MyEclipse使用总结——MyEclipse10安装SVN插件
  8. ASP正则表达式对象 - New RegExp
  9. selenium点击元素位置_Selenium常见元素定位方法和操作
  10. Spring4Shell 漏洞已遭Mirai 僵尸网络利用
  11. 力扣——所有可能的路径
  12. oracle 删除jobs日志,修改Oracle的Job Scheduler 日志级别及删除运行日志
  13. Filter和interceptor比较
  14. PTA是什么?BT-WIFI共存 转帖
  15. [转] crontab命令
  16. eplan图纸怎么发给别人_如何保护你的EPLAN图纸
  17. (原創) 如何讓ThinkPad的TrackPoint的中鍵支援MSN、FireFox、IE7和Office 2007的捲動? (NB) (ThinkPad)...
  18. Python 将 QQ 聊天记录生成词云(分手了如何欢度情人节?)
  19. 全球15个免费卫星遥感数据源都在这儿,地信人必看!
  20. torchaudio::is_sox_available关于使用pyinstaller 编译的问题

热门文章

  1. java中方法_java中的方法
  2. 去重 属性_Javascript算法 — 数组去重
  3. python自动化办公都能做什么-用python进行办公自动化都需要学习什么知识呢?
  4. python中文视频教程-中谷教育python中文视频教程(全38集)
  5. python能做什么工作-学了Python可以做什么工作
  6. 语音专题第四讲,语音识别之解码器技术简介|大牛讲堂
  7. linux下docker部署nginx
  8. Web API-本地存储
  9. 小学学校计算机室文化建设方案,计算机室文化建设方案
  10. react周期函数介绍