地址:http://acm.uestc.edu.cn/#/problem/show/1587

题目:

失恋772002天

Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others)
Submit Status

日天失恋了,为了安慰他,锅爷决定带他去抓娃娃。锅爷买了111个币,连抓108把却一无所获。锅爷说:“这个娃娃机很邪”,于是把剩下3个币给了日天。日天仅用33把,就抓获一只海绵宝宝、一只卡布达和一只美羊羊。于是,他决定每天晚上和一只娃娃睡觉,来获取心灵上的慰藉。但是,日天是个有原则的人,他决不允许自己连续三天和三个不同的人睡觉,娃娃也是如此。请你来计算,按照日天的要求,他失恋的前NN天,共有多少种不同的睡觉方式呢?

Input

一个整数N(1≤N≤772002)N(1≤N≤772002),代表日天的失恋天数。

Output

输出日天失恋前N天的睡觉方案数对UESTC−ACM−2017UESTC−ACM−2017新人交流群群号:554056561取模的结果。

Sample input and output

1
3
2
9
3
21

思路:简单dp题

  dp方程见代码

 #include <bits/stdc++.h>

 using namespace std;

 #define MP make_pair
#define PB push_back
typedef long long LL;
typedef pair<int,int> PII;
const double eps=1e-;
const double pi=acos(-1.0);
const int K=1e6+;
const int mod=; int dp[K][];
int main(void)
{
std::ios::sync_with_stdio(false);
std::cin.tie();
dp[][]=;
dp[][]=,dp[][]=;
for(int i=;i<=;i++)
dp[i][]=(dp[i-][]+dp[i-][])%mod,dp[i][]=(dp[i-][]*+dp[i-][])%mod;
int x;
cin>>x;
cout<<(dp[x][]+dp[x][])%mod<<endl;
return ;
}
05-11 21:57