天天看點

藍橋杯VIP試題 之 基礎練習 Sine之舞 - JAVA

原題連結

問題描述

最近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

	}

}
           

繼續閱讀