# Sine之舞



时间限制: 1Sec 内存限制: 128MB 提交: 1605 解决: 964

提交地址：

https://www.dotcpp.com/oj/problem1463.html

**题目描述**
```
最近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，以一个换行符结束。输出中不得含有多余的空格或换行、回车符。

**样例输入**
```
3
```
**样例输出**
```
((sin(1)+3)sin(1-sin(2))+2)sin(1-sin(2+sin(3)))+1
```

### 思路一


```
N=int(input())
An=['']*N
An[0]='sin(1)'
sin='sin()'
for i in range(1,N):
    if i%2==0:
        An[i]=An[i-1][:-i]+'+'+sin[:-1]+str(i+1)+sin[-1:]+An[i-1][-i:]
    else:
        An[i]=An[i-1][:-i]+'-'+sin[:-1]+str(i+1)+sin[-1:]+An[i-1][-i:]
n=N
temp=An[0]+'+'+str(n)
n-=1
for i in range(1,N):
    temp="("+temp+")"+An[i]+'+'+str(n)
    n-=1
print(temp)
```

    3
    ((sin(1)+3)sin(1-sin(2))+2)sin(1-sin(2+sin(3)))+1


### 思路二


```
N=int(input())
sin='sin()'
An=['']*N
def op(N,s):
    if N==1:
        return sin[0:-1]+'1-'+s+sin[-1]
    if N%2==0:
        return op(N-1,sin[0:-1]+str(N)+'+'+s+sin[-1])
    else:
        return op(N-1,sin[0:-1]+str(N)+'-'+s+sin[-1])
# a=op(N-1,sin[0:-1]+str(N)+sin[-1])
#print(a)
An[0]='sin(1)'
for i in range(1,N):
    An[i]=op(i,sin[0:-1]+str(i+1)+sin[-1])
    #print(i+1,An[i])
n2=N
def op2(n,s,n2):
    if n==N-1:
        print(s+str(An[n])+'+'+str(n2))#+'+'+'str(1)
        return 
    op2(n+1,'('+s+An[n]+'+'+str(n2)+')',n2-1)
op2(0,'',n2)
```

    1
    sin(1)+1
