1. 程式人生 > >小黑跳地毯減肥(遞推)

小黑跳地毯減肥(遞推)

由於長期缺乏運動,小黑髮現自己的身材臃腫了許多,於是他想健身,更準確地說是減肥。
小黑買來一塊圓形的毯子,把它們分成三等分,分別標上A,B,C,稱之為“跳舞毯”,他的運動方式是每次都從A開始跳,每次都可以任意跳到其他塊,但最後必須跳回A,且不能原地跳.為達到減肥效果,小黑每天都會堅持跳n次,有天他突然想知道當他跳n次時共幾種跳法,結果想了好幾天沒想出來-_-
現在就請你幫幫他,算出總共有多少跳法。

程式輸入說明

測試輸入包含若干測試用例。每個測試用例佔一行,表示n的值(1<=n<=1000)。
當n為0時輸入結束。

程式輸出說明

每個測試用例的輸出佔一行,由於跳法非常多,輸出其對10000取模的結果.

程式輸入樣例

2
3
4
0

程式輸出樣例

2
2
6
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 using namespace std;
 5 int a[1005
]; 6 int solve(int n){ 7 if(n==1) 8 return 0; 9 else if(n==2) 10 return 2; 11 else if(n==3) 12 return 2; 13 else{ 14 for( int i = 4; i <= n; i++ ) 15 a[i] = (a[i-1]+2*a[i-2])%10000; 16 } 17 return a[n]; 18 } 19 20 int main(){ 21 22
int n; 23 a[1] = 0; 24 a[2] = 2; 25 a[3] = 2; 26 while(cin>>n&&n){ 27 cout<<solve(n)<<endl; 28 } 29 return 0; 30 }