Sine之舞(qdulq)(40 point(s))
最近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 code:
#include <iostream> #include <cstdio> using namespace std; int n; //根据所给公式发现是从小到大递归 //观察先输入的什么,左边是sin(%d //然后是符号,根据前面的数字变号,从这里一直递归下去 //最后输出) void An(int N,int t){ if(N ==t){ printf("sin(%d)",N); return ; } printf("sin(%d",N); if(N < t){ if(N%2) printf("-"); else printf("+"); An(N+1,t); } printf(")"); } //根据公式先输出的是( //所以要先递归,到最后一个,而最后是输出A1和n //所以An从大到小递归,n从小到大递归 //递归到最后输出An,然后输出+n //最后输出) void Sn(int N,int t){ if(N > 1){ printf("("); Sn(N-1,t+1); } An(1,N); printf("+%d",t); if(N!=n) printf(")"); } int main(){ scanf("%d",&n); Sn(n,1); return 0; }