Easy Wuxing

Accepted : 25   Submit : 124
Time Limit : 1000 MS   Memory Limit : 65536 KB

题目描述

“五行”是中国传统哲学思想,它认为认为大自然的现象由“木、火、土、金、水”这五种气的变化所总括, 不但影响到人的命运,同时也使宇宙万物循环不已。
五行具有相生相克的性质,规律如下:

  • 五行相克:金克木,木克土,土克水,水克火,火克金。
  • 五行相生:金生水,水生木,木生火,火生土,土生金。
  • 五行任一行与其他五行的关系为:同我、生我、我生、克我、我克。


给你一个1*n的格子,将五行填上去,每格填一个,要求相邻格以及首尾格不能是同我和相克的关系, 请问一共有多少种不同的方案?

输入

多组样例,每组一个整数n(0≤n≤106),如果n为0,表示输入结束,这个样例不需要处理。

输出

每行输出一个样例的结果,因为数值可能非常大,请将结果对109+7取模。

样例输入

1
2
0

样例输出

5
10

Source

XTU OnlineJudge

 
 
矩阵快速幂取模
 #include<iostream>
#include<stdio.h>
#include<cstring>
#include<cstdlib>
#include<queue>
using namespace std;
typedef __int64 LL;
const LL mod = ; struct Matrix
{
LL mat[][];
void Init()
{
LL cur;
int i,j;
mat[][]=;mat[][]=;mat[][]=;mat[][]=;mat[][]=;
for(i=;i<=;i++)
{
for(j=;j<=;j++)
{
if(j==) cur=;
else cur=j-;
mat[i][j]=mat[i-][cur];
}
}
}
}M_hxl;
void Matrix_ini(Matrix *cur,int n)
{
int i,j;
for(i=;i<=n;i++)
for(j=;j<=n;j++)
if(i==j)
cur->mat[i][j]=;
else cur->mat[i][j]=;
}
Matrix Multiply(Matrix cur,Matrix now,int len)
{
Matrix ww;
int i,j,k;
memset(ww.mat,,sizeof(ww.mat));
for(i=;i<=len;i++)
for(k=;k<=len;k++)
if(cur.mat[i][k])
{
for(j=;j<=len;j++)
if(now.mat[k][j])
{
ww.mat[i][j]+=cur.mat[i][k]*now.mat[k][j];
if(ww.mat[i][j]>=mod)
ww.mat[i][j]%=mod;
}
}
return ww;
}
struct Matrix M_add(Matrix cur,Matrix now,int len)
{
Matrix ww;
int i,j;
memset(ww.mat,,sizeof(ww.mat)); for(i=;i<=len;i++)
for(j=;j<=len;j++)
{
ww.mat[i][j]=cur.mat[i][j]+now.mat[i][j];
if(ww.mat[i][j]>=mod)
ww.mat[i][j]%=mod;
}
return ww;
}
Matrix pow_sum1(Matrix cur,int n,int len)
{
Matrix ww;
Matrix_ini(&ww,len);
while(n)
{
if(n&)
{
ww=Multiply(ww,cur,len);
}
n=n>>;
cur=Multiply(cur,cur,len);
}
return ww;
}
void solve(int n)
{
LL k=;
M_hxl.Init();
M_hxl=pow_sum1(M_hxl,n,);
k=(M_hxl.mat[][]+M_hxl.mat[][])%mod;
k=(k*)%mod;
printf("%I64d\n",k);
}
int main()
{
LL T,n;
while(scanf("%I64d",&n)>)
{
if(n==)break;
if(n==)
{
printf("5\n");
continue;
}
solve(n-);
}
return ;
}

湘潭校赛 Easy Wuxing的更多相关文章

  1. 湘潭校赛 Hard Wuxing

    Hard Wuxing Accepted : 13   Submit : 166 Time Limit : 1000 MS   Memory Limit : 65536 KB 题目描述 “五行”是中国 ...

  2. 湘潭校赛 Bob's Problem

    Bob's Problem Accepted : 18   Submit : 115 Time Limit : 1000 MS   Memory Limit : 65536 KB  题目描述 Bob今 ...

  3. 2019湘潭校赛 G(并查集)

    要点 题目传送 题目本质是每个点必属于两个集合中的一个,伴随的性质是:如果一个人说别人true,则他们一定属于同一阵营:如果说别人fake,一定不属于同一阵营. 每个点拆为\(i\)和\(i + n\ ...

  4. 2019湘潭校赛 H(dp)

    题目传送 dp是常规的:\(m^2\)的预处理:把位置存进vector然后\(O(1)\)算出想要的:WA点:要注意特意设置一下val[i][v.size()]=0,即全天都放鸽子则花费时间为0. # ...

  5. 2019湘潭校赛 E(答案区间维护)

    题目传送 思路是始终维护西瓜数量的区间,即L代表目前可以达到的最少的,R是最多的,然后判断一下. #include <bits/stdc++.h> using namespace std; ...

  6. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  7. SCNU省选校赛第二场B题题解

    今晚的校赛又告一段落啦,终于"开斋"了! AC了两题,还算是满意的,英语还是硬伤. 来看题目吧! B. Array time limit per test 2 seconds me ...

  8. 2014上半年acm总结(1)(入门+校赛)

    大一下学期才开始了acm,不得不说有一点迟,但是acm确实使我的生活充实了很多,,不至于像以前一样经常没事干=  = 上学期的颓废使我的c语言学的渣的一笔..靠考前突击才基本掌握了语法 寒假突然醒悟, ...

  9. 2017CUIT校赛-线上赛

    2017Pwnhub杯-CUIT校赛 这是CUIT第十三届校赛啦,也是我参加的第一次校赛. 在被虐到崩溃的过程中也学到了一些东西. 这次比赛是从5.27早上十点打到5.28晚上十点,共36小时,中间睡 ...

随机推荐

  1. series dataframe 的 idxmax()

    返回最大值的索引

  2. 838. Push Dominoes

    There are N dominoes in a line, and we place each domino vertically upright. In the beginning, we si ...

  3. Flask 中的 Response

    1.Flask中的HTTPResponse @app.route("/") # app中的路由route装饰器 def index(): # 视图函数 return "I ...

  4. WKWebView 里 JS 和 native 通信的例子

    native 端 初始化 wkwebview,设置 message handler webView = WKWebView.init() let usecc = self.webView.config ...

  5. jdbc连接2(不可以注入)

    public void login1(String username, String password) throws ClassNotFoundException, SQLException { / ...

  6. java编写service详细笔记 - centos7.2实战笔记(windows类似就不在重复了)

    java编写service详细笔记 - centos7.2实战笔记(windows类似就不在重复了)  目标效果(命令行启动服务): service xxxxd start #启动服务  servic ...

  7. Hive执行过程

    http://blog.csdn.net/wf1982/article/details/9122543

  8. python3 判断大小端的一种方法

    这里用到了array.array('H', [1])来测试大小端,[1]可以转化为十六进制的0x0001,占两位,00位高位, 01位低位,通过第一位就可以判断大小端. 如果是小端,则转化为bytes ...

  9. 2018春招-美团后台开发方向编程题 (python实现)

    第一题:字符串距离 题目: 给出两个相同长度的由字符 a 和 b 构成的字符串,定义它们的距离为对应位置不同的字符的数量.如串”aab”与串”aba”的距离为 2:串”ba”与串”aa”的距离为 1: ...

  10. HDFS DATANODE 磁盘容量的最小值

    HDFS的DATANODE的剩余空间具体要到多大?关于这个问题,下面记录下对这个问题的调查 昨天,讨论群里面给出了一个异常: op@odbtest bin]$ hadoop fs -put ../tm ...