Timus 1149. Sinus Dances 打印复杂公式
来源:互联网 发布:mac os x install esd 编辑:程序博客网 时间:2024/06/16 12:16
就是打印下面这两个复杂的式子:
Let An = sin(1–sin(2+sin(3–sin(4+…sin(n))…)
Let Sn = (…(A1+n)A2+n–1)A3+…+2)An+1
For given N print SN
Let Sn = (…(A1+n)A2+n–1)A3+…+2)An+1
For given N print SN
Input
One integer N. 1 ≤ N ≤ 200
Output
Line containing SN
Sample
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;}
最后的运行时间是差不多的。
1 1
- Timus 1149. Sinus Dances 打印复杂公式
- timus 1149. Sinus Dances URAL 解题报告
- Ural 1149. Sinus Dances
- ural 1149. Sinus Dances dfs
- 复杂书写公式书写
- 测试复杂LaTex公式
- Timus 1209. 1, 10, 100, 1000... 根据数列推导公式
- 调试打印复杂对象
- perl 打印复杂数据结构
- 打印复杂图形(三角)
- 《数据手袋》将实现复杂计算公式。
- Lucene的打分公式非常复杂
- Linux系统下复杂文字打印
- [转贴]Linux系统下复杂文字打印
- C#中使用GDI+实现复杂打印
- 利用VB设计打印复杂报表
- 利用VB设计打印复杂报表
- .Net中复杂打印的灵活方法
- Nutch-2.2.1----Nutch过滤URL实践
- 利用DOM4J在java环境下读写xml文件的方法
- PDF文档的开发工具PDFlib使用方法/免费下载/介绍大全
- 职场中那些大多数人正在犯的错误
- 实现主成分分析和白化
- Timus 1149. Sinus Dances 打印复杂公式
- CentOS6下安装sshfs,将远程主机文件系统挂载到本地访问(附软件包下载地址)(
- SQL SERVER 2005 在Windows7 中运行出错 error:26 的解决方案
- apache httpd+tomcat
- Nginx实现正向和反向代理
- Monkey log 分析
- layout_weight详解示例
- suse下配置IP、DNS、网关
- 关于Ubuntu的ip设置