藍橋杯java 基礎練習 Sine之舞

問題描述
  最近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)))+1java

 

import java.util.*;  

public class Main  
{  
    public static void main(String args[])  
    {  
        Scanner cn=new Scanner(System.in);  
        int t=cn.nextInt();  
        String str2=String.valueOf(S(t));     
        System.out.println(str2);     //其實不將StringBuffer類型轉化成String類型輸出也能夠  
    }  
      
    public static StringBuffer S(int t)   //產生Sn的函數  
    {  
        String str="";  
        for(int i=1;i<t;i++)  
            str=str+"(";  
        for(int i=1,j=t;i<=t;i++,j--)  
        {  
            str=str+A(i)+"+"+j+")";    //期間調用產生An 的函數  
        }  
        StringBuffer str2=new StringBuffer(str);    
        str2.deleteCharAt(str2.length()-1);     //由於多產生了一個  「)」    
        return str2;  
    }  
    public static StringBuffer A(int i)  
    {  
        String str="";  
        for(int t=1;t<=i;t++)  
        {  
            if(t%2!=0)  
                str=str+"+"+"sin("+t;   //這樣會使第一項也會有一個「+」   因此後續得去掉  
            else  str=str+"-"+"sin("+t;   
        }  
        for(int t=1;t<=i;t++)  
            str=str+")";  
        StringBuffer str2=new StringBuffer(str);   //由於多產生了一個「+」號   
        str2.deleteCharAt(0);  
        return str2;  
    }  
      
}
相關文章
相關標籤/搜索