HDU6029 Happy Necklace 2017-05-07 19:11 45人阅读 评论(0) 收藏
Happy Necklace
Time Limit: 2000/1000 MS (Java/Others) Memory Limit:
131072/131072 K (Java/Others)
Total Submission(s): 19 Accepted Submission(s): 9
Little Q desperately wants to impress his girlfriend, he knows that she will like the necklace only if for every prime length continuous subsequence in the necklace, the number of red beads is not less than the number of blue beads.
Now Little Q wants to buy a necklace with exactly n beads.
He wants to know the number of different necklaces that can make his girlfriend happy. Please write a program to help Little Q. Since the answer may be very large, please print the answer modulo 109+7.
Note: The necklace is a single string, {not a circle}.
denoting the number of test cases.
For each test case, there is a single line containing an integer n(2≤n≤1018),
denoting the number of beads on the necklace.
2
2
3
3
4
题意:一个项链有n个珠子,这个项链是个链,不是一个环,项链上连续素数个珠子中红色珠子个数要大于等于蓝色珠子
解题思路:找出前面几个,发现存在递推关系f[i]=f[i-1]+f[i-3],然后构造矩阵,矩阵快速幂
{1 1 0}
矩阵构造: {a[i],a[i-1],a[i-2]}={a[i-1],a[i-2],a[i-3]}*{0
0 1}
{1 0 0}
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm>
#include <cmath>
#include <map>
#include <cmath>
#include <set>
#include <stack>
#include <queue>
#include <vector>
#include <bitset>
#include <functional> using namespace std; #define LL long long
const int INF=0x3f3f3f3f;
#define mod 1000000007 LL n; struct Matrix
{
LL v[5][5];
Matrix()
{
memset(v,0,sizeof v);
}
}dan; Matrix mul(Matrix a,Matrix b,int d)
{
Matrix ans;
for(int i=1; i<=d; i++)
{
for(int j=1; j<=d; j++)
{
for(int k=1; k<=d; k++)
{
ans.v[i][j]+=a.v[i][k]*b.v[k][j];
ans.v[i][j]%=mod;
}
}
}
return ans;
} Matrix pow(Matrix a,LL k,int d)
{
Matrix ans=dan;
while(k)
{
if(k&1) ans=mul(ans,a,d);
k>>=1;
a=mul(a,a,d);
}
return ans;
} int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%lld",&n);
if(n==2) {printf("3\n");continue;}
if(n==3) {printf("4\n");continue;}
if(n==4) {printf("6\n");continue;}
Matrix ans,a;
a.v[1][1]=a.v[3][1]=a.v[1][2]=a.v[2][3]=1;
dan.v[1][1]=6,dan.v[1][2]=4,dan.v[1][3]=3;
ans=pow(a,n-4,3);
printf("%lld\n",ans.v[1][1]);
}
return 0;
}
HDU6029 Happy Necklace 2017-05-07 19:11 45人阅读 评论(0) 收藏的更多相关文章
- hdu 1053 (huffman coding, greedy algorithm, std::partition, std::priority_queue ) 分类: hdoj 2015-06-18 19:11 22人阅读 评论(0) 收藏
huffman coding, greedy algorithm. std::priority_queue, std::partition, when i use the three commente ...
- Let the Balloon Rise 分类: HDU 2015-06-19 19:11 7人阅读 评论(0) 收藏
Let the Balloon Rise Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Oth ...
- ZOJ2208 To and Fro 2017-04-16 19:30 45人阅读 评论(0) 收藏
To and Fro Time Limit: 2 Seconds Memory Limit: 65536 KB Mo and Larry have devised a way of encr ...
- Codeforces816A Karen and Morning 2017-06-27 15:11 43人阅读 评论(0) 收藏
A. Karen and Morning time limit per test 2 seconds memory limit per test 512 megabytes input standar ...
- 在Eclipse中运行hadoop程序 分类: A1_HADOOP 2014-12-14 11:11 624人阅读 评论(0) 收藏
1.下载hadoop-eclipse-plugin-1.2.1.jar,并将之复制到eclipse/plugins下. 2.打开map-reduce视图 在eclipse中,打开window--> ...
- HDU6029 Graph Theory 2017-05-07 19:04 40人阅读 评论(0) 收藏
Graph Theory Time Limit: 2000/1000 M ...
- 滑雪 分类: POJ 2015-07-23 19:48 9人阅读 评论(0) 收藏
滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 83276 Accepted: 31159 Description Mich ...
- highgui.h备查 分类: C/C++ OpenCV 2014-11-08 18:11 292人阅读 评论(0) 收藏
/*M/////////////////////////////////////////////////////////////////////////////////////// // // IMP ...
- Hdu2204 Eddy's爱好 2017-06-27 16:11 43人阅读 评论(0) 收藏
Eddy's爱好 Time Limit : 3000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Subm ...
随机推荐
- Inteiilj IDEA 团队代码格式规范
目录 Intellij IDEA code format Tabs and Indents Spaces Wrapping and Braces Imports 更新 Intellij IDEA co ...
- sessionpage1
session1 <%@page import="java.text.SimpleDateFormat"%> <%@ page language="ja ...
- 吴裕雄 python神经网络 水果图片识别(2)
import osimport numpy as npimport matplotlib.pyplot as pltfrom skimage import color,data,transform,i ...
- springmvc DispatchServlet初始化九大加载策略(三)
7. initRequestToViewNameTranslator 请求视图名 它主要与视图解析有关,如果对ViewResolvers.ModelAndView.View等没有多大印象,可以先看第8 ...
- C++ 内存解析
一.内存基本构成可编程内存在基本上分为这样的几大部分:静态存储区.堆区和栈区.他们的功能不同,对他们使用方式也就不同. 静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在 ...
- JAVA知识积累 给HttpClient添加Socks代理
本文描述http client使用socks代理过程中需要注意的几个方面:1,socks5支持用户密码授权:2,支持https:3,支持让代理服务器解析DNS: 使用代理创建Socket 从原理上来看 ...
- OC 和 swift 冒泡排序
swift 版 var numbers = [17, 28, 36, 15, 39] print("排序前\(numbers)") for i in 0..<numbers. ...
- [udemy]WebDevelopment_History of The Web
WWW vs Internet For the begining, Internet was there. it was for the academics among universities Th ...
- 【转】Https内部机制基础知识
互联网权威机构 - CA 机构,又称为证书授权 (Certificate Authority) 机构,浏览器会内置这些"受信任的根证书颁发机构" (即 CA). 数字证书 提及 H ...
- db2 sql调优
当我们发现某个SQL语句执行很慢时,可以通过查看它的访问计划来定位原因,如是否执行了合适的索引.是否采用了正确的连接方法等.但是我们发现很多用户对访问计划的生成和解释工具的使用存在很多疑惑,本文通过一 ...