hdu 1041 (OO approach, private constructor to prevent instantiation, sprintf)
来源:互联网 发布:战翼468长板淘宝 编辑:程序博客网 时间:2024/06/06 02:17
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
#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[n]); } 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;}
0 0
- hdu 1041 (OO approach, private constructor to prevent instantiation, sprintf)
- private/protected constructor
- Java Private Constructor
- Private Constructor capture idiom
- Java Spring Tutorial -- Factory, Static, and Constructor Bean Instantiation
- SOA Approach to Integration
- An Approach to Style
- how to avoid instantiation of template operator?
- HOW TO ;Prevent a…
- A new approach to China
- Orcs Weisha to approach Cheats
- Can we make copy constructor private?
- How to prevent subsequent initialization in Android
- Top 10 Ways To Prevent Cancer
- a method to prevent double click
- How to prevent object bloat in PostgreSQL
- How to Prevent Silent Data Corruption
- Use explicit instantiation to minimize compile time and link time;
- PCB板设计中蛇形走线有什么作用
- Once decided,start from here..........
- D3js-地图中标注地点
- Mysql 关于 order by limit 的一个问题
- CBIR 基于Hash图像检索小结(待完成计划)
- hdu 1041 (OO approach, private constructor to prevent instantiation, sprintf)
- Volley学习笔记
- ExecutorService常用方法和newFixedThreadPool创建固定大小的线程池
- JAVA适配器实例讲解
- Android Application类注意事项
- GeoServer中一个shape发布多个图层时出现调用空白的问题及解决办法
- 捕捉键盘中断消息
- 一些有趣的网站
- qemu 在当前OS中运行其它的操作系统