原題連結
問題描述
最近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
}
}