(紀中)1658. 走法(problem2)【數學(找規律)】

(File IO): input:problem2.in output:problem2.out
時間限制: 1000 ms 空間限制: 262144 KB 具體限制
Goto ProblemSet


題目描述
從原點出發,一步只能向右走、向上走或向左走。恰好走NN步且不經過已走的點共有多少種走法?


輸入
一個數字N<=1000N<=1000

輸出
一個數表示所求答案mod12345mod 12345.


樣例輸入
2

樣例輸出
7


數據範圍限制


解題思路
NN確定時,走法的種類是確定的。
N=nN=n時,走法的種類爲A(n)A(n),
則當N=1N=1時,A(1)=3A(1)=3;當N=2N=2時,A(2)=7A(2)=7
所以,多推幾個可以發現遞推關係式:A(n)=2A(n1)+A(n2)A(n)=2*A(n-1)+A(n-2)
例如 當N=3N=3時,A(3)=2A(2)A(1)=27317A(3)=2*A(2)+A(1)=2*7+3=17
N=4N=4時,A(4)=2A(3)A(2)=217741A(4)=2*A(3)+A(2)=2*17+7=41


代碼

#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
#include<algorithm>
#include<iomanip>
#include<cmath>
using namespace std;
const int INF=12345;
long long a[1100];
int n;
int main()
{
	freopen("problem2.in","r",stdin);
    freopen("problem2.out","w",stdout);
	scanf("%d",&n);
	a[0]=1,a[1]=3;
	for(int i=2;i<=n;i++)
		a[i]=(a[i-1]*2+a[i-2])%INF;
	cout<<a[n];
	
} 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章