1049. Mondriaan

转载 2012年03月26日 17:00:40

直接上递推公式 f[i]=3*f[i-1]+f[i-2]-f[1-3] (i>=3)

通项公式为 f[i]=2*(f[0]+f[1]+...+f[n-3])+3*f[n-2]+2*f[n-1]

 

长度为1的区间内可能有2种情况,即两个正方形或一个长方形

长度为2的区间内去掉长度为1的区间中的情况有3种情况,即上面两个正方形,下面一个长方形,上下颠倒又是一种,还有两个长方形,共三种

长度大于或等于3的区间中想要不与长度为2的情况重复,只能两个长方形相互重叠一个长度,在空缺处补正方形,上下颠倒即有两种

由以上可得通项公式,由通项公式可得递推公式


#include <iostream>
#include <cstring>
using namespace std;
int f[1000001];
int main()
{
    int cases,o;
    int n;
    memset(f,0,sizeof(f));
    f[0]=1;
    f[1]=2;
    f[2]=7;
    for (int i=3; i<=1000001; i++)
    {
        f[i]=(3*f[i-1]+f[i-2]-f[i-3]+10)%10;//为防止负数取模错误,要加上10
    }
    cin>>cases;
    for (o=1; o<=cases; o++)
    {
        cin>>n;
        cout<<f[n]<<endl;
    }
    return 0;
}


Sicily 1049. Mondriaan

1049. Mondriaan Constraints Time Limit: 1 secs, Memory Limit: 32 MB Description Sq...

Sicily 1049 Mondriaan

Constraints Time Limit: 1 secs, Memory Limit: 32 MB Description Squares and rectangles fascina...

Zju1100 Mondriaan

Description有一个m行n列的矩阵,用1*2的骨牌(可横放或竖放)完全覆盖,骨牌不能重叠,有多少种不同的覆盖的方法? 你只需要求出覆盖方法总数mod p的值即可。 Input三个整数数n,...

GA1049-第7部分

  • 2016年12月20日 11:04
  • 643KB
  • 下载

PAT : 1049. 数列的片段和(20)

给定一个正数数列,我们可以从中截取任意的连续的几个数,称为片段。例如,给定数列{0.1, 0.2, 0.3, 0.4},我们有(0.1) (0.1, 0.2) (0.1, 0.2, 0.3) (0.1...
  • hyt502
  • hyt502
  • 2016年03月01日 11:05
  • 483

GA1049-第1部分:通讯协议第1部分

  • 2016年12月20日 10:43
  • 498KB
  • 下载

PAT全套答案_1001至1049.rar

  • 2014年10月22日 16:56
  • 30KB
  • 下载

杭电ACM1049的解题报告

Climbing Worm Problem Description An inch worm is at the bottom of a well n inches deep. It has enou...
  • Aqin556
  • Aqin556
  • 2016年07月27日 11:02
  • 465

浙大PAT全套答案_1001至1049.

  • 2013年04月13日 20:01
  • 2.71MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:1049. Mondriaan
举报原因:
原因补充:

(最多只允许输入30个字)