hdu 1041 (OO approach, private constructor to prevent instantiation, sprintf)
2015-06-17 15:57
399 查看
a problem where OO seems more natural to me, implementing a utility class not instantiable.
how to prevent instantiation, thanks to http://stackoverflow.com/questions/10558393/prevent-instantiation-of-an-object-outside-its-factory-method/10558404#10558404
how to prevent instantiation, thanks to http://stackoverflow.com/questions/10558393/prevent-instantiation-of-an-object-outside-its-factory-method/10558404#10558404
[code]#include <cstdio> #include <algorithm> class CompTrans { CompTrans() { } static const unsigned NUMS_LEN=240000, MAX_NUM=1000, BASE=1000000000; static bool isinitialized; static char nums[NUMS_LEN]; static char* pos[MAX_NUM+2]; public: static bool isinited() { return isinitialized; } static void init(); static void printnth(unsigned n) { puts(pos ); } static unsigned getMAX_NUM() { return MAX_NUM; } }; bool CompTrans::isinitialized=false; char CompTrans::nums[]; char* CompTrans::pos[]; void CompTrans::init() { if(isinited()) return; int i,j,k; char *p=nums; const int NSIZE=40; unsigned n1[NSIZE]={0}, n2[NSIZE]={1}, n3[NSIZE]={0},tmp, *p1,*p2,*p3,*ptmp, carry; p1=n1,p2=n2,p3=n3; for(k=0, i=1;i<=MAX_NUM;++i) { pos[i]=p; p+=sprintf(p,"%u",p1[k]); for(j=k-1;j>=0;--j) p+=sprintf(p,"%09u",p1[j]); *p++=0; if(p2[k+1]!=0) ++k; for(carry=0, j=0;j<=k;++j) { tmp=carry+p2[j]+(p1[j]<<1); carry=tmp/BASE; p3[j]=tmp%BASE; } p3[j]=carry; ptmp=p1; p1=p2; p2=p3; p3=ptmp; } isinitialized=true; } int main() { //freopen("input.txt","r",stdin); int n; if(!CompTrans::isinited()) CompTrans::init(); while(scanf("%d",&n)!=EOF && n<=CompTrans::getMAX_NUM()) { CompTrans::printnth(n); } return 0; }
相关文章推荐
- Android 发展 ------------- Unable to resolve target 'android-19'
- android 内存泄露浅谈和处理
- 对Android opengl ES世界坐标系和纹理坐标系的理解
- 分析Android框架及Android程序的目录结构
- +load 和 +initialize 的区别
- 完美解决Android SDK Manager无法更新
- Objective-C Runtime(一)预备知识
- 站在巨人的肩膀上学习Android开发
- Android最佳性能实践(四)——布局优化技巧
- android5.1 Settings简介
- 《Android开发权威指南(李宁) 》
- 【Android】侧边栏SlidingMenu
- unity3D-AR开发之摄像机对焦
- Android_Handler和Handler.Callback和Message
- Android最佳性能实践(三)——高性能编码优化
- 关于Object-C有关接口方面的应用
- Android OOM全解析
- Android最佳性能实践(二)——分析内存的使用情况
- IOS:UIApplication sharedApplication详细解释
- iOS开发多线程篇—GCD简介