/*
这道题的收获,当你不知道数据需要定多大时,输出最大数据自己进行一次判断,不要盲目带数据。如①处的语句。
*/
#include <cstdio>
#include <cstring>
const int nMax = 1007;
const int mMax = 250;
struct BigNumber
{
int data[mMax];
int len;
BigNumber(){len = 1; memset(data, 0 ,sizeof(data));}
BigNumber(char *str){*this = str;}
BigNumber &operator=(char *str);
BigNumber operator+(BigNumber &a);
void clearLeadZero();
void print();
}F[nMax];
BigNumber & BigNumber::operator =(char *str)
{
memset(data, 0, sizeof(data));
len = strlen(str);
int i;
for(i = 0; i < len; ++ i)
data[i] = str[len - i - 1] - '0';
return *this;
}
BigNumber BigNumber::operator +(BigNumber &a)
{
BigNumber z;
int i, j, q;
q = 0;
for(i = 0, j = 0; q || i < len || j < a.len; ++ i, ++ j)
{
int p = data[i] + a.data[j] + q;
z.data[i] = p % 10;
q = p / 10;
}
z.len = i;
z.clearLeadZero();
return z;
}
void BigNumber::clearLeadZero()
{
while(len > 1 && !data[len - 1]) -- len;
}
void BigNumber::print()
{
int i;
for(i = len - 1; i >= 0; -- i)
printf("%d", data[i]);
printf("\n");
}
bool isZero(int pi)
{
if(F[pi].data[0] == 0 && F[pi].len == 1)
return 1;
return 0;
}
BigNumber &f(int pi)
{
if(!isZero(pi)) return F[pi];
if(pi == 1 || pi == 2) F[pi] = "1";
else
F[pi] = f(pi - 1) + f(pi - 2);
return F[pi];
}
int main()
{
freopen("f://data.in", "r", stdin);
int T;
scanf("%d", &T);
int N;
while(T--)
{
scanf("%d", &N);
f(N);
F[N].print();
//printf("%d\n",F[N].len);//①
}
return 0;
}
HDU 1715 大菲波数
最新推荐文章于 2021-09-26 15:50:19 发布
本文探讨了在数据处理过程中,如何合理设定数据大小、利用结构化数据存储和高效算法实现,以提升处理效率和准确性。通过实例展示了如何在不盲目带入数据的情况下,进行最大数据判断,并详细介绍了BigNumber类的实现,包括赋值、加法运算、清除前导零和打印功能。此外,还提供了动态计算斐波那契数列的方法,并在主函数中进行了输出演示。
部署运行你感兴趣的模型镜像
您可能感兴趣的与本文相关的镜像
AutoGPT
AI应用
AutoGPT于2023年3月30日由游戏公司Significant Gravitas Ltd.的创始人Toran Bruce Richards发布,AutoGPT是一个AI agent(智能体),也是开源的应用程序,结合了GPT-4和GPT-3.5技术,给定自然语言的目标,它将尝试通过将其分解成子任务,并在自动循环中使用互联网和其他工具来实现这一目标
190

被折叠的 条评论
为什么被折叠?



