原题链接
问题描述
最近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
解题代码:
import java.util.ArrayList;
import java.util.Scanner;
public class 试题基础练习Sine之舞 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
String[] A=new String[n+1];//创建两个字符数组
String[] S=new String[n+1];
A[1]="sin(1)";
for(int i=2;i<=n;i++)//形成An;
{
// StringBuilder f=new StringBuilder(" ");
String f=" ";
if(i%2==0)
{
f="-";
}
else
{
f="+";
}
A[i]=A[i-1].substring(0, A[i-1].length()-i+1)+f+"sin("+i+")";
for(int j=1;j<i;j++)
{
A[i]+=")";
}
// System.out.println(A[i]);
}//思路:可以先连接形成目标字符串的雏形,在依次加括号!!!
// System.out.println(A[n]);
if(n==1)//形成Sn
{
S[1]=A[1]+"+"+(n-1+1);
System.out.println(S[n]);
}
else {
S[1]=A[1]+"+"+(n-1+1);
for(int i=2;i<=n;i++)
{
S[i]=S[i-1]+")"+A[i]+"+"+(n-i+1)+")";
for(int j=1;j<i;j++)
{
S[i]="("+S[i];
}
}
System.out.println(S[n].substring(1, S[n].length()-1));
}//思路:可以先连接形成目标字符串的雏形,在依次加括号!!!
// while(i<=n)
// {
// s[i]="("+A[i]+(n-i+1)+")"
// }
// TODO Auto-generated method stub
}
}