原题目地址

问题描述

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

样例代码

/*
关于sprintf函数的介绍:
(来自CSDN,那些大佬比我了解得多。)

srpintf()函数的功能非常强大:
效率比一些字符串操作函数要高;
而且更具灵活性;
可以将想要的结果输出到指定的字符串中,
也可作为缓冲区,
而printf只能输出到命令行上
/
#include
#define N 200000
int main()
{
char
sinA = “sin(%d%s%s)”;
char* Sa = “%s+%d”;
char* S = “(%s)%s”;
char An[N] = “sin(1%s%s)”, An2[N], An3[N], Sn[N] = “sin(1)+%d”, Sn2[N];
int i, j, n;
scanf(“%d”, &n);
sprintf(Sn2, Sn, n);
strcpy(Sn, Sn2);
for (i = 2; i <= n; i++)
{
sprintf(An2, An, i % 2 == 0 ? “-“ : “+”, sinA);
strcpy(An, An2);
sprintf(An2, An, i, “%s”, “%s”);
strcpy(An, An2);
sprintf(An2, Sa, An, n - i + 1);
sprintf(An3, An2, “”, “”);
sprintf(Sn2, S, Sn, An3);
strcpy(Sn, Sn2);
sprintf(Sn2, Sn, n - i+ 1);
strcpy(Sn, Sn2);
}
printf(“%s”, Sn);
return 0;
}