小黑跳地毯減肥(遞推)
阿新 • • 發佈:2018-12-11
由於長期缺乏運動,小黑髮現自己的身材臃腫了許多,於是他想健身,更準確地說是減肥。
小黑買來一塊圓形的毯子,把它們分成三等分,分別標上A,B,C,稱之為“跳舞毯”,他的運動方式是每次都從A開始跳,每次都可以任意跳到其他塊,但最後必須跳回A,且不能原地跳.為達到減肥效果,小黑每天都會堅持跳n次,有天他突然想知道當他跳n次時共幾種跳法,結果想了好幾天沒想出來-_-
現在就請你幫幫他,算出總共有多少跳法。
當n為0時輸入結束。
每個測試用例的輸出佔一行,由於跳法非常多,輸出其對10000取模的結果.
小黑買來一塊圓形的毯子,把它們分成三等分,分別標上A,B,C,稱之為“跳舞毯”,他的運動方式是每次都從A開始跳,每次都可以任意跳到其他塊,但最後必須跳回A,且不能原地跳.為達到減肥效果,小黑每天都會堅持跳n次,有天他突然想知道當他跳n次時共幾種跳法,結果想了好幾天沒想出來-_-
現在就請你幫幫他,算出總共有多少跳法。
程式輸入說明
測試輸入包含若干測試用例。每個測試用例佔一行,表示n的值(1<=n<=1000)。當n為0時輸入結束。
程式輸出說明
程式輸入樣例
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 22int 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 }