蓝桥杯学习记录
一、测试练习:
问题名称: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。
代码:
#include <iostream>
#include <string>
#include<sstream>
using namespace std;
int main()
{
int N;
cin>>N;
if(N == 0) {cout<<0;return 0;}
string A[N+1];
A[1] = "sin(1)";
int pos = 5;//标记插入的位置
for(int i = 2; i <= N; i++){
string str = A[i-1];
string str1;
if( i % 2 == 0)
str1 = "-sin()";
else
str1 = "+sin()";
stringstream st; //把int 转换成 string
st<<i;
string str2 = st.str();
str1.insert(5,str2);
str.insert(pos,str1);
A[i] = str;
pos += 6;
}
for(int i = 1; i < N; i++)
cout<<'(';
for(int i = 1; i < N; i++)
cout<<A[i]<<'+'<<N+1-i<<')';
cout<<A[N]<<'+'<<1;
}