題目 1463: [藍橋杯]sine之舞
時間限制: 1sec 記憶體限制: 128mb
題目描述
最近fj為他的奶牛們開設了數學分析課,fj知道若要學好這門課,必須有乙個好的三角函式基本功。所以他準備和奶牛們做乙個「sine之舞」的遊戲,寓教於樂,提高奶牛們的計算能力。
不妨設an=sin(1–sin(2+sin(3–sin(4+…sin(n))…)
sn=(…(a1+n)a2+n-1)a3+…+2)an+1
fj想讓奶牛們計算sn的值,請你幫助fj列印出sn的完整表示式,以方便奶牛們做題。
輸入僅有乙個數:n<201。
輸出請輸出相應的表示式sn,以乙個換行符結束。輸出中不得含有多餘的空格或換行、回車符。
樣例輸入
樣例輸出
((sin(1)+3)sin(1-sin(2))+2)sin(1-sin(2+sin(3)))+1
題目分析:
這裡的an對應的值要從輸出裡面看出來
當n=3的時候,會發現輸出sn(3)中的a1,a2,a3的值分別是sin(1),sin(1-sin(2),sin(1-sin(2+sin(3)))。
一開始我以為是a1是sin(1-sin(1)),後來發現錯了,因此廢了很多時間。
所以輸出樣例真的很重要,審題不清,後果很嚴重。
知道了a1,a2,a3那麼可以推出巢狀的關係式。
再看s1,s2,s3:
s1=a1+1
s2=(a1+2)a2+1
s3=((a1+3)a2+2)a3+1
也能發現巢狀的關係式。
n=3,則成對的括號數為n-1
所以為了處理括號,我是先處理左括號,再處理右括號。
在**的sn函式中有體現。
上**
#include
using
namespace std;
int n,i=
1,k=1;
voidxn(
int n)
if(i==n&&i>1)
else cout
;//到i==n的情況,則輸出後返回 }if
(i%2!=0
)//判斷輸出正負號情況
else
}voidan(
int n)
voidsn(
int n)
an(b)
; cout<<
"+"<")";
//後括號與前括號對應,前括號在main裡面
n--; i=1;
//呼叫an後,i會發生改變,所以要重置
b++;//an(b)就相當於ab如果b==1,an(b)=a1 }}
intmain()
sn(n)
;}
藍橋杯 Sine之舞
描述 分析 遞迴問題。先遞迴求得a na n an 再根據a na n an 求出s ns n sn 寫這題花了40分鐘,看來還是功力太差 求後面的a na n an 時會重複求a1 an 1 a a a1 an 1 的步驟,顯然會浪費很多時間,如果用乙個字串陣列記錄下來會很好,然而即使沒加入記錄的...
(藍橋杯)Sine之舞
問題描述 最近fj為他的奶牛們開設了數學分析課,fj知道若要學好這門課,必須有乙個好的三角函式基本功。所以他準備和奶牛們做乙個 sine之舞 的遊戲,寓教於樂,提高奶牛們的計算能力。不妨設an sin 1 sin 2 sin 3 sin 4 sin n sn a1 n a2 n 1 a3 2 an ...
藍橋杯 基礎練習 Sine之舞 遞迴
時間限制 1.0s 記憶體限制 512.0mb 問題描述 最近fj為他的奶牛們開設了數學分析課,fj知道若要學好這門課,必須有乙個好的三角函式基本功。所以他準備和奶牛們做乙個 sine之舞 的遊戲,寓教於樂,提高奶牛們的計算能力。不妨設an sin 1 sin 2 sin 3 sin 4 sin n...