高精度
2024-07-02 17:43:49
发布于:上海
45阅读
0回复
0点赞
只需要高精加。
#include <cstdio>
#include <cstring>
#include <algorithm>
#define rep(x,y) for(int i=(x);i<=(y);i++)
struct INT{
char d[1050];short len;
INT(){
std::memset(d,0,sizeof(d));
len=1;
};
INT(int a){
std::memset(d,0,sizeof(d));
d[0]=a;
len=1;
}
};
INT plus_(INT a, INT b){
INT c;
int mxabl = std::max(a.len, b.len);
for(int i=0;i<mxabl;i++){
c.d[i]+=a.d[i]+b.d[i];
if(c.d[i]>=10){
c.d[i+1]++;
c.d[i]-=10;
}
}
if(c.d[mxabl]==0) c.len=mxabl;
else c.len=mxabl+1;
return c;
}
int main(){
int n;
std::scanf("%d",&n);
INT a=1,b=2,c=0;
rep(3,n){
c = plus_(a,b);
a = b;
b = c;
}
for(int i=b.len-1;i>=0;i--) std::putchar(b.d[i]+'0');
return 0;
}
全部评论 1
做法错误(
2024-08-03 来自 湖南
0
有帮助,赞一个