7 Sine之舞
作者: Turbo时间限制: 1S章节: 递归
问题描述 :
最近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
#include<stdio.h>
/*这一题应该考察的是用递归的方式解决问题,但我搞不定这种,靠的就是观察公式规律,拆分部分打印*/
void An_output(int n){//打印式子An
if(n==1)printf("sin(1)");
else{
printf("sin(1");
int i;
for(i=2;i<=n;i++){
if(i%2==0)printf("+sin(%d",i);
else printf("-sin(%d",i);
}
for(i=0;i<n;i++)printf(")");
}
}
void Sn_output(int n){//已知An后,打印输出Sn
if(n==1){
An_output(1);
printf("+1");
}
else{
int i;
for(i=0;i<n-1;i++)printf("(");
for(i=1;i<=n-1;i++){
An_output(i);
printf("+%d)",n-i+1);
}
An_output(n);
printf("+1");
}
}
int main(){
int n;
scanf("%d",&n);
Sn_output(n);
return 0;
}