Happy Necklace
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相关推荐
- HDU 5727 Necklace
题目:Necklace 链接:http://acm.hdu.edu.cn/showproblem.php?pid=5727 题意:要用n个阳石和n个阴石来串一个项链(环状),规定阳石旁边只能是阴石,阴 ...
- 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∑na[i] ...
- CF1361C. Johnny and Megan‘s Necklace(构造,欧拉回路,传递闭包)
CF1361C. Johnny and Megan's Necklace Solution 真duliu,快做吐了... 刚开始想了一个假做法(但前面还是很真的). 假的做法大概是你发现这个东西具有传 ...
- UVa10054 The Necklace 欧拉回路
如果图G中的一个路径包括每个边恰好一次,则路径称为欧拉路径. 如果一个回路是欧拉路径,则称为欧拉回路.(即起点终点相同的欧拉路) 有欧拉回路的称为欧拉图,有欧拉路径但无欧拉回路的称为半欧拉图. 无向图 ...
- HDU 5730 Shell Necklace
HDU 5730 Shell Necklace 原题连接: http://acm.hdu.edu.cn/showproblem.php?pid=5730 闻题而来. 设组合成长度为 k k的方案数量为 ...
- Accepted Necklace HDU - 2660
Accepted Necklace HDU - 2660 WA wa了两发又双叒叕是因为没读清楚题我裂开 AC代码 好家伙一手最low的dp竟然过了,我还一直不敢交hhhh #include < ...
- HDU-2660 Accepted Necklace
GDUT 2020寒假训练 专题一 D 原题链接 HDU-2660 Accepted Necklace GDUT-专题1-D BFS/DFS 题目大意 有N个石头想要从中选出K个做成项链,每颗石头有自 ...
- USACO Section 1.2 Broken Necklace
题目 题目分析 推的过程 需要避免的坑 整体代码 USACO的题解 题目 题目描述 输入描述 Line 1: N, the number of beads Line 2: a string of N ...
- Necklace(树状数组+离线操作)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3874 Necklace Time Limit: 15000/5000 MS (Java/Others) ...
最新文章
- python中带星号的参数,带有一个星号 2个星号
- 代码中的输入输出(重定向、文件流C/C++)
- Java实现自动生成Mysql数据库表实体类
- 皮一皮:藏头诗有时候也不能太藏...
- ZenHub已集成于GitHub企业版
- C#如何控制方法的执行时间,超时则强制退出方法执行
- MyEclipse使用总结——MyEclipse10安装SVN插件
- ASP正则表达式对象 - New RegExp
- selenium点击元素位置_Selenium常见元素定位方法和操作
- Spring4Shell 漏洞已遭Mirai 僵尸网络利用
- 力扣——所有可能的路径
- oracle 删除jobs日志,修改Oracle的Job Scheduler 日志级别及删除运行日志
- Filter和interceptor比较
- PTA是什么?BT-WIFI共存 转帖
- [转] crontab命令
- eplan图纸怎么发给别人_如何保护你的EPLAN图纸
- (原創) 如何讓ThinkPad的TrackPoint的中鍵支援MSN、FireFox、IE7和Office 2007的捲動? (NB) (ThinkPad)...
- Python 将 QQ 聊天记录生成词云(分手了如何欢度情人节?)
- 全球15个免费卫星遥感数据源都在这儿,地信人必看!
- torchaudio::is_sox_available关于使用pyinstaller 编译的问题