藍橋杯 遞迴入門 Sine之舞 C

2021-10-08 07:04:03 字數 1429 閱讀 6885

題目 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...