题目链接

分析:
一道推公式的题目。看着这个范围就感觉是矩阵快速幂。
首先,可以把连续的素数中这个要求简化成连续两个和三个中的要求,很容易想。
定义:a[i],b[i]a[i],b[i]分别表示长度为i,以red和blue结尾的串的个数。
然后,探索一下,发现a[i]=a[i−1]+b[i−1],b[i]=a[i−2]a[i] = a[i-1] + b[i-1], b[i] = a[i - 2],最终答案两个加一下就行了。

代码:

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cstdlib>
#include <vector>
#include <queue>
#include <deque>
#include <stack>
#include <set>
#include <cmath>using namespace std;const int mod = 1e9 + 7;struct Mat {int n;long long a[4][4];Mat (int _n = 4) : n(_n) {memset(a, 0, sizeof(a));}Mat operator *(const Mat& rhs) {Mat c;for (int k = 0; k < 4; k ++)for (int i = 0; i < 4; i ++)for (int j = 0; j < 4; j ++)c.a[i][j] = (c.a[i][j] + a[i][k] * rhs.a[k][j] % mod) % mod;return c;}
}E;void init() {for (int i = 0; i < 4; i ++)E.a[i][i] = 1;
}Mat qpow(Mat A, long long b) {Mat C = E;while (b) {if (b & 1) C = C * A;A = A * A;b >>= 1;}return C;
}int main(int argc, char const *argv[]) {int T; cin>>T;init();while (T --) {long long n;scanf("%lld", &n);Mat A;A.a[0][0] = 0, A.a[0][1] = 0, A.a[0][2] = 1, A.a[0][3] = 0;A.a[1][0] = 0, A.a[1][1] = 0, A.a[1][2] = 0, A.a[1][3] = 1;A.a[2][0] = 1, A.a[2][1] = 1, A.a[2][2] = 0, A.a[2][3] = 1;A.a[3][0] = 1, A.a[3][1] = 0, A.a[3][2] = 0, A.a[3][3] = 0;A = qpow(A, n - 2);long long b[4];b[0] = 1, b[1] = 1, b[2] = 2, b[3] = 1;long long ans = 0;for (int i = 2; i < 4; i ++)for (int j = 0; j < 4; j ++)ans = (ans + A.a[i][j] * b[j] % mod) % mod;printf("%d\n", (int)ans);}return 0;
}

2017CCPC女生赛 hdu 6030 Happy Necklace相关推荐

  1. HDU 6030 Happy Necklace

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=6030 题意:给出红蓝两种,然后排成一个字符串,要求在每一个长度为素数的区间里面是的r(red)的数量不小与 ...

  2. 第二届CCPC女生赛 粗略题解(要做重现的不要看哦)

    因为再不全力投入华为软件精英挑战赛就来不及了! 而且直播时讲过题了,所以只能粗略写一个题解,希望大家包涵>.< 基本可以参考代码,可以画图模拟加思考脑补其原理与过程23333~~ 会后续有 ...

  3. 2019 CCPC 女生赛

    题目链接 Rank:67 / 297  (不过榜单好像不是现场的榜单) 这次韩巍有课没来,我和程磊两个人做的,这次做的是女生赛,沃老师出的题,题面都是中文题,比较友好,题目都比较简单,都是思维题,一共 ...

  4. 2017 女生赛总结

    第一次参加女生赛的时候还是个20天速成萌新,拼拼凑凑组了一支队去杭电参赛.只做了2道题,惨列倒数第五名-- 一年过去,加入了ACM俱乐部,被俱乐部里的大佬们虐了一年以后重新参加这个比赛. 拿了铜牌,虽 ...

  5. 2019CCPC江苏南京女生赛 | 总结

    今年的女生专场在江苏南京晓庄学院举办 (夸一波 主办方周老师好可爱~~ 桌牌设计的很好看 志愿者小姐姐也很热心~ 第一次见到了wls.谈姐姐等巨巨 很难得在开头放队友友链 因为这一篇说的实在是太废话了 ...

  6. 武汉工程大学第一届程序设计女生赛(牛客contest 4746)解题报告 Apare_xzc

    武汉工程大学第一届程序设计女生赛解题报告 xzc 2020.3.8 比赛链接:武汉工程大学第一届程序设计女生赛 A. Multiplication (101/861) 分析: 问x平方几次后就会> ...

  7. HDU 5730 Shell Necklace

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

  8. 2022CCPC女生赛 | 总结

    目录 1.做题情况 2.一些感想 1.做题情况 我们队A了三道题,罚时比较长,应该是吊在铜尾这个位置 2.一些感想 这次比赛真的慌慌张张,从最开始的队友电脑登不进去,到我的电脑(唯一一台能打代码的电脑 ...

  9. 2019CCPC女生赛总结

    赛后感言 这大概真的是我最后一场ACM现场赛了吧,每一次参加现场赛后都是难过和遗憾-(文末附上照片) 前几天刚毕业答辩结束,明天就要上班了.昨天来到南京参加CCPC女生赛,今天上午8:30-9:30热 ...

最新文章

  1. Emlog文章海报插件
  2. C#开发终端式短信的原理和方法 .
  3. hdoj 3400 三分
  4. request,response,session
  5. 用Unity简单实现第三人称人物的移动和转向
  6. 十八、完成登录与注册页面的前端
  7. 联想微型计算机4250怎么拆机,联想T430笔记本拆机增加内存条图解教程
  8. 2007版的office软件下载及简介
  9. 联想笔记本电脑V110拆机、清灰详细步骤
  10. java软尾山地车评测_如何挑选适合自己的软尾山地自行车
  11. C语言牛顿迭代法求开平方
  12. 关于阿里云云虚拟主机上传php论坛代码的那点事
  13. 币图告诉你如何解决双花问题
  14. 自己整理的:学习verilog DHL问题笔记——Quartus常见错误
  15. Android【WebView】
  16. 旅行商问题(travelling salesman problem, TSP) 解题报告
  17. 37岁985老兵,小公司朝九晚五,大龄底层没机会了!
  18. 树莓派3b安装新系统的步骤和一些问题
  19. python什么是矢量化运算?
  20. CC3220学习安装环境安装烧写步骤

热门文章

  1. jquery验证手机号码、邮箱格式是否正确
  2. /etc/ssh/sshd_config的 PasswordAuthentication PermitRootLogin ClientAliveCountMax ClientAliveInterval
  3. 预警,MDPI旗下期刊版面费即将暴涨,最高上涨9300元
  4. 【数据结构与算法】之深入解析“圆形靶内的最大飞镖数量”的求解思路与算法示例
  5. android绘制屏幕闪烁,Android画图避免屏幕闪烁
  6. Excel如何巧妙计算结算日期
  7. 奈雪收购乐乐茶,茶饮品牌开启整合之路
  8. 收集银行卡号前六位识别发卡行和卡的种类(不全)
  9. 计算机视觉该怎么有效地入门进阶?推荐最喜欢看的几个地方
  10. 列宁格勒—诺夫哥罗德战役