锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 鎴戜滑璁緁(n)涓烘妸n涓洏浠?縐誨埌3鎵闇瑕佺殑姝ユ暟錛屽綋鐒朵篃絳変簬浠?縐誨埌1鐨勬鏁般?br>
棰樼洰鍦板潃:
http://acm.hdu.edu.cn/showproblem.php?pid=2085
棰樼洰鎻忚堪:
鏌愭牳鍙嶅簲鍫嗘湁涓ょ被浜嬩歡鍙戠敓錛?br>楂樿兘璐ㄧ偣紕板嚮鏍稿瓙鏃訛紝璐ㄧ偣琚惛鏀訛紝鏀懼嚭3涓珮鑳借川鐐瑰拰1涓綆鑳借川鐐癸紱
浣庤兘璐ㄧ偣紕板嚮鏍稿瓙鏃訛紝璐ㄧ偣琚惛鏀訛紝鏀懼嚭2涓珮鑳借川鐐瑰拰1涓綆鑳借川鐐廣?br>鍋囧畾寮濮嬬殑鏃跺欙紙0寰錛夊彧鏈変竴涓珮鑳借川鐐瑰皠鍏ユ牳鍙嶅簲鍫嗭紝姣忎竴寰寮曡搗涓涓簨浠跺彂鐢?瀵逛簬涓涓簨浠訛紝褰撳墠瀛樺湪鐨勬墍鏈夎川鐐歸兘浼氭挒鍑繪牳瀛?錛岃瘯紜畾n寰鏃墮珮鑳借川鐐瑰拰浣庤兘璐ㄧ偣鐨勬暟鐩?br>
Input
杈撳叆鍚湁涓浜涙暣鏁皀(0≤n≤33)錛屼互寰涓哄崟浣嶏紝鑻涓?/span>-1琛ㄧず澶勭悊緇撴潫銆?br>
Output
鍒嗗埆杈撳嚭n寰鏃跺埢楂樿兘璐ㄧ偣鍜屼綆鑳借川鐐圭殑鏁伴噺錛岄珮鑳借川鐐逛笌浣庤兘璐ㄧ偣鏁伴噺涔嬮棿浠ラ楀彿絀烘牸鍒嗛殧銆傛瘡涓緭鍑哄崰涓琛屻?br>
Sample Input
5 2
-1
Sample Output
571, 209
11, 4
涓涓緢綆鍗曠殑閫掓帹棰?:
L[i] = H[i-1] + L[i-1]; // 浣庤兘
鏈変竴鐐硅娉ㄦ剰 , 闇瑕?64浣嶆暣褰繚瀛樼粨鏋? 鍚﹀垯浼氭孩鍑?
浠g爜濡備笅:
#include <iostream>
using namespace std;
int main ()
{
long long H[34] = { 1 , 3 },L[34] = { 0 , 1 };
for ( int i = 2; i != 34; ++ i )
{
H[i] = 3 * H[i-1] + 2 * L[i-1];
L[i] = H[i-1] + L[i-1];
}
int N;
while ( cin >> N , N + 1 )
{
cout << H[N] << ", " << L[N] << endl;
}
return 0;
}
]]>
棰樼洰鍦板潃:
http://acm.hdu.edu.cn/showproblem.php?pid=2064
棰樼洰鎻忚堪:
姹夎濉擨II
姹夎濉?font color=#000000 size=2>鏄釜寰堢粡鍏哥殑閫掓帹瀹炰緥, 濡傛灉瑙勫垯娌¤繖涔堝彉鎬侊紝鍏佽鐩存帴浠?璺ㄨ秺鍒?錛岄偅n涓洏鏈灝戦渶瑕?n - 1嬈°?br>
鑰岃繖閲屽鍔犱簡涓浜涙柊鐨勮鍒? 鎴戜滑鍙互濡備笅鍒嗘瀽, 鎬庢牱鎶?span style="COLOR: red">n涓洏浠?span style="COLOR: #ff0000">1鎼埌3 :
絎?姝?鍒濆鐘舵?

絎?姝?鎶婁笂闈㈢殑n-1涓洏縐誨埌絎?鍙鋒潌涓?

絎?姝?鎶婄n涓洏浠?縐誨埌2:
絎?姝?鎶婂墠n-1涓粠3縐誨埌1錛岀粰絎釜鐩樿璺?

絎?姝?鎶婄n涓洏浠?縐誨埌3:

絎?姝?鎶婂墠n-1涓粠縐誨埌3錛屽畬鎴愮Щ鍔?

鐢變笂闈㈢殑鍥炬垜浠彲浠ョ湅鍒?瑕佹兂鎶婄n涓洏浠?縐誨埌3錛岄渶瑕?涓楠?:
1.) 鎶婂墠n-1涓粠1縐誨姩3 .
2.) 絎琻涓洏瑕佷粠1->2->3緇忓巻2姝?
3.) 鑰屽墠n-1涓洏闇瑕佸厛 3->1 ( 榪欐槸涓轟簡緇?絎琻涓洏璁╄礬 ), 鏈鍚庡啀 1->3銆?br>
∴f(n) = 3 × f(n-1) + 2;
f(1) = 2; f(n) = 3 × f(n-1) + 2
f(1) = 2
=>
f(n) + 1 = 3 × [f(n-1) + 1]
f(1) + 1 = 2 + 1 = 3
=>
f(n) + 1 = 3n
=>
f(n) = 3n - 1
鏈鍚庤創涓婁唬鐮?:
#include <iostream>
#include <cmath>
using namespace std;
long long myPow ( int n , int e )
{
long long mlt = 1;
for ( int i = 1; i <= e ; ++ i )
{
mlt *= n;
}
return mlt;
}
int main ()
{
int N;
while ( cin >> N )
{
cout << myPow ( 3, N ) - 1 << endl;
}
return 0;
}
]]>