1 条题解
-
0
C++ :
#include<iostream> #include<sstream> #include<cstring> #include<cstdio> #include<cstdlib> using namespace std; // 求An void An(string &an, int i, int flag, int n) { // an:字符串an // i:用于循环1-n // flag:用于记录序号 // n:题目中的n // itoa 的参数是字符类型指针,返回值是一个指针,指向的是一个字符串 // N < 201故 //char ch[4]; //itoa(i, ch, 10); // 用下面的流处理可以使代码更加清晰 stringstream stream; stream << i; string string_temp = stream.str(); //此处也可以用 stream>>string_temp an += "sin(" + string_temp; if(i < n) { // 符号 if(flag) { an += "-"; } else { an += "+"; } flag = !flag; // 递归调用 An(an, i+1, flag, n); } an += ")"; } // 求Sn void Sn(string &te, int i, int n) { // te:存储结果的字符串 // 生成该层括号内的字符串 string string_temp; An(string_temp, 1, 1, i); // 将数字转换成字符 stringstream stream; stream << n-i+1; string string_temp2 = stream.str(); //此处也可以用 stream>>string_temp string_temp += "+" + string_temp2; if(i > 1) { te = "(" + te; Sn(te, i-1, n); } // 最外层没有)符号 if(i == n) { te += string_temp; } else { te += string_temp +")"; } } int main() { string re; // 结果字符串 int n; cin >> n; // 递归从外层往里循环 Sn(re, n, n); cout << re; return 0; }
- 1
信息
- ID
- 3516
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者