HDU-1865-1sting
2015-07-18 12:55
465 查看
这是个高精度的模板题,自己递推一下,找到公式f
=f[n-1]+f[n-2],就可以很简单的用模板离线算出所有1的个数的情况;
=f[n-1]+f[n-2],就可以很简单的用模板离线算出所有1的个数的情况;
#include<iostream> #include<string> #include<cstdio> #include<cstring> #include<queue> #include<map> #include<set> #include<vector> #include<algorithm> #define LL long long using namespace std; string f[205],s; string add(string a,string b) // 自己写的简单高精度模板 { string ans=""; int aa[1005]={0},bb[1005]={0}; for(int i=0;i<a.size();i++) aa[a.size()-i-1]=a[i]-'0'; // 将字符装换成数字,并且反过来,便于模拟加法运算; for(int i=0;i<b.size();i++) bb[b.size()-i-1]=b[i]-'0'; int len=a.size()>b.size()?a.size():b.size(); for(int i=0;i<len;i++){ aa[i]+=bb[i]; // 模拟加法,对应位置数相加, aa[i+1]+=aa[i]/10; // 进位处理; aa[i]%=10; // 取模; } while(!aa[len]) len--; // 确定位数; for(int i=len;i>=0;i--) ans+=aa[i]+'0'; // 仍然转化为字符; return ans; } int main() { int t; cin.sync_with_stdio(false); f[1]='1';f[2]='2'; for(int i=3;i<202;i++) f[i]=add(f[i-1],f[i-2]); // 离线将结果算好; cin>>t; while(t--){ cin>>s; cout<<f[s.size()]<<endl; } return 0; }
相关文章推荐
- atitit.jndi的架构与原理以及资源配置and单元测试实践
- atitit.jndi的架构与原理以及资源配置and单元测试实践
- 俏江南张兰为何给自己点赞?
- 水题 Codeforces Round #105 (Div. 2) B. Escape
- Eclipse中离线安装ADT插件详细教程
- 自定义cell 3
- C语言中内存分布及程序运行中(BSS段、数据段、代码段、堆栈)
- 链表基本操作的实现
- 《开源分享2》:《开源框架实战宝典电子书V1.0.0》完整版!
- 用c#开发微信 (21) 微信酒店预订系统
- 行业分析已经过时
- centos安装openswan
- Python字典key值查询效率低的问题
- (转)继承、重载、覆盖、多态
- 8.19! 今天我有18生日,点击阅读或顶部 尾随幸运的一天!生日知识!↓——【Badboy】
- FZU2072——二分——Count
- [LyncServer2013企业版迁移SkypeForBusinessServer2015企业版]三,部署新前端服务器
- 管理类敏捷实践
- 炼数成金(原 itpub 培训)
- 7月拍牌记