博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDOJ 1250 Hat's Fibonacci 简单解题报告
阅读量:5076 次
发布时间:2019-06-12

本文共 2741 字,大约阅读时间需要 9 分钟。

    看起来超级简单的题,除了那2005位数。。。正好这几天都在做高精度乘法和加法的题,自己写了一个类。

    下面是我的AC代码:直接加的话内存会爆,所以我又特地写了一个函数,呵呵。。。7038的原因是strlen(t[7037])==2005.

#include 
using namespace std;const int MAX_LEN=2010;int temp[MAX_LEN];class bigNumber{public: bigNumber() { memset(number,0,sizeof(number)); number[0]='0'; } bigNumber(char *str) { memcpy(number,str,strlen(str)+1); } bigNumber(int a) { int i=0; memset(number,0,sizeof(number)); if(a==0) number[0]='0'; else { while(a) { number[i++]=a%10+'0'; a/=10; } _strrev(number); } } ~bigNumber() { } char* getNumber() { return number; } friend ostream& operator<<(ostream& output, bigNumber& t) { output<
getNumber())>strlen(t.getNumber())?this:&t; bigNumber* b=strlen(this->getNumber())>strlen(t.getNumber())?&t:this; bigNumber* c=new bigNumber(); char *x=a->getNumber(); char *y=b->getNumber(); char *z=c->getNumber(); int lenx=strlen(x); int leny=strlen(y); int i; int flag=0; for(i=0;i
9; z[i]=z[i]%10+'0'; } for(;i
9; z[i]=z[i]%10+'0'; } if(flag) z[i]='1'; _strrev(z); return *c; } void addFourNumber(bigNumber& a,bigNumber& b,bigNumber& c,bigNumber& d) { int i,len,lenx,leny,lenp,lenq; int flag=0; char *x=a.getNumber(); char *y=b.getNumber(); char *p=c.getNumber(); char *q=d.getNumber(); char *z=this->getNumber(); lenx=strlen(x); leny=strlen(y); lenp=strlen(p); lenq=strlen(q); len=lenx>leny?lenx:leny; len=lenp>len?lenp:len; len=lenq>len?lenq:len; for(i=0;i
getNumber(); char *y=t.getNumber(); char *z=c->getNumber(); int lenx=strlen(x); int leny=strlen(y); int i,j; memset(temp,0,sizeof(temp)); for(i=0;i
9;i++) { if(temp[i]>9) temp[i+1]+=temp[i]/10; z[i]=temp[i]%10+'0'; } z[i]=temp[i]+'0'; while(z[i]=='0') z[i--]=0; _strrev(z); return *c; } bigNumber& operator=(bigNumber& t) { memcpy(number,t.getNumber(),strlen(t.getNumber())+1); return *this; } bigNumber& operator=(char *str) { memcpy(number,str,strlen(str)+1); return *this; }private: char number[MAX_LEN];};bigNumber t[7038]={ 1,1,1,1,1};int main(){ int i; for(i=5;i<7038;i++) t[i].addFourNumber(t[i-1],t[i-2],t[i-3],t[i-4]); while(cin>>i) cout<
<

 

转载于:https://www.cnblogs.com/IT-BOY/archive/2013/01/31/2887197.html

你可能感兴趣的文章
关于MySQL建表对DML的影响【转】
查看>>
Centos7系统备份与恢复教程
查看>>
jquery插件之 jquery.cookie
查看>>
PAT1009 Product of Polynomials
查看>>
OpenLayers修改要素
查看>>
BZOJ1478 Sgu282 Isomorphism
查看>>
解决kubuntu(KDE4.8.5桌面环境)找不到中文语言包
查看>>
世界杯改变网站“生存法则”
查看>>
java基础(读取键盘输入Scanner)
查看>>
微信第三方开放平台-笔录
查看>>
.NET框架源码解读之MYC编译器
查看>>
【Demo】CSS3 2D转换
查看>>
YYMMDD转YYYY-MM-DD
查看>>
java基础(第七章课后作业)01
查看>>
基础 - 时钟
查看>>
[源码和文档分享]基于Python和SQL SERVER数据库实现的实验信息综合管理系统
查看>>
[源码和文档分享]基于LR分析法的简单分析法
查看>>
android studio快捷键集合
查看>>
审查(黄金)Censoring (Gold)
查看>>
MySQL实战06の锁
查看>>