[题记]Sine之舞-蓝桥杯
题目: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)))+1
我们根据题意来分别构建An和Sn的构造函数即可。
An:
- 输出一个 “ sin( ”
- 输出一个数字 i
- 根据i的奇偶来输出 ‘+’ 或 ‘-’
- 输出一个 ‘ ) ’
Sn:
- 输出一个 ‘ ( ’
- 输出An
- 输出一个字符 ‘)’ 和数字 i
- 根据 i 来判断是不是到最后从而停止输出字符 ‘)’
最后输出一个回车符即可。
代码(c++):
#include <iostream> using namespace std; void An( int n , int i) { if( n == 0 ) return ; //输出字符串和数字 i cout << "sin(" << i; //根据 i 的奇偶输出 + - if( n != 1 ) { if( i % 2 == 0 ) cout << '+'; else cout << '-'; } An( n - 1, i + 1 ); //输出字符 cout << ')'; } void Sn( int n, int i ) { if( n == 0 ) return ; //输出字符 if( n != 1 ) cout << '('; Sn( n - 1, i + 1 ); //输出An和+和数字i An( n, 1 ); cout << '+' << i; //根据i判断是够输出字符 ( if( i != 1 ) cout << ')'; } int main() { int n; cin >> n; Sn( n, 1 ); cout << '\n'; return 0; }
2020-04-04-16:22:44