BASIC-21 Sine 之舞

BASIC-21 Sine 之舞

题目

资源限制

时间限制:1.0s 内存限制:512.0MB

问题描述

最近 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.Scanner;

public class BASIC_21 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        scanner.close();
        System.out.println(S(n));
    }

    public static String S(int n) {
        int i = 1;
        return S(n, i);
    }

    public static String S(int n, int i) {
        if (n == 1)
            return A(n) + "+" + i;
        else
            return "(" + S(n - 1, i + 1) + ")" + A(n--) + "+" + i++;
    }

    public static String A(int n) {
        String[] args = { "+", "-", "sin(", ")" };
        String result = "";
        if (n == 1)
            return "sin(1)";
        for (int i = 1; i < n; i++)
            result += args[2] + i + args[i % 2];
        result += args[2] + n;
        for (int i = 0; i < n; i++)
            result += args[3];
        return result;
    }
}
posted @ 2022-03-19 14:31  morning-start  阅读(48)  评论(0编辑  收藏  举报