就是打印下面这两个复杂的式子:
LetAn= sin(1–sin(2+sin(3–sin(4+…sin(n))…)
LetSn= (…(A1+n)A2+n–1)A3+…+2)An+1
For givenNprintSN
Input
Output
Sample
input
output
3
|
((sin(1)+3)sin(1–sin(2))+2)sin(1–sin(2+sin(3)))+1
|
一看就知道需要使用递归打印了,关键是如何安排好递归才能精确地打印,
下面两个函数分别处理两个式子,综合起来得到答案。
其中注意增加mItoS这个函数是必要的,因为当n >= 10的时候,那么就不能直接转换成为char了。
#include <string>
#include <vector>
#include <cmath>
#include <algorithm>
#include <iostream>
#include <map>
using namespace std;
string mItoS(int n)
{
string s;
while (n)
{
s.push_back(n % 10 + '0');
n /= 10;
}
reverse(s.begin(), s.end());
return s;
}
string printAn(int n)
{
if (n < 1) return "";
if (1 == n) return "sin(1)";
string s = printAn(n-1);
string s2;
if ((n-1) % 2)
{
s2 = "-sin(";
}
else s2 = "+sin(";
s2 += mItoS(n);
s2.push_back(')');
s.insert(s.end() - (n-1), s2.begin(), s2.end());
return s;
}
string printSn(int n, int c = 1)
{
if (1 == n)
{
string s;
s.append(c-1, '(');
s += printAn(1);
s.push_back('+');
s += mItoS(c);
return s;
}
string s = printSn(n-1, c+1);
s.push_back(')');
s += printAn(n);
s.push_back('+');
s += mItoS(c);
return s;
}
void SinusDances1149()
{
int n = 0;
cin>>n;
cout<<printSn(n);
}
有人不使用递归也做到了,不过那样更难想到了,因为要观察其中的规律,更加复杂,不过他的代码更加简洁,下面是她论坛上找到的程序:
#include<stdio.h>
int mainSinus()
{
int n,i,j;
scanf("%i",&n);
for(i=1;i<n;i++) printf("(");
for(i=1;i<=n;i++)
{
for(j=1;j<=i;j++)
{
if(j>1)
printf((j&1)?"+":"-");
printf("sin(%i",j);
}
for(j=1;j<=i;j++)printf(")");
printf("+%i",n+1-i);
if(i!=n)printf(")");
}
return 0;
}
最后的运行时间是差不多的。
分享到:
相关推荐
变频器说明书大全系列-SINUS PENTA 编程指南.rar
Treatment of Pilonidal Sinus
变频器说明书大全系列-SINUS PENTA安装指南.rar
T-Sinus111data无线网卡驱动 不就很好找
变频器说明书系列-sinus N.pdf
变频器说明书系列-SINUS K.pdf
变频器说明书大全系列-sinus N.rar
变频器说明书大全系列-SINUS K.rar
变频器说明书大全系列-SINUS PENTA 参数列表.rar
变频器说明书系列-SINUS PENTA 参数列表V1.1.pdf
inverter two level controled by MLI-SINUS
变频器说明书系列-SINUS PENTA编程指南-简体中文.pdf
sinus-game
本数学指标的工作原理是基于近似正弦波以实现货币对报价的傅里叶系列的可视化.
Sine wave with stm32f100c6
意科(IECCO)SINUS-PENTA-3变频器编程指南.pdf 介绍了关于意科(IECCO)SINUS-PENTA-3变频器编程指南的详细说明,提供变频器的技术资料的下载。
一个简单的用opengl绘制sin曲线的例子,教学用
介绍了关于意科(IECCO)SINUS-N变频器说明书的详细说明,提供变频器的技术资料的下载。
Sara Shepard is the author of two New York Times bestselling series, Pretty Little Liars and the Lying Game. She graduated from NYU and has an MFA from Brooklyn College. Sara's Pretty Little Liars ...
变频器说明书大全系列-ZCSUNS P安装手册-英文-.rar