456laji @ 2020-05-16 19:47:01
代码丑陋,见谅。
#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
const int N=1e5+10;
ull num[N];
int solv(int w,int *a,int lena,int *b,int lenb,int k)
{
if(w==k)
{
for(int i=lenb;i>=0;i--)
printf("%d",b[i]);
return 0;
}
int lenc=0,up=0;
int c[N]={0};
while(lenc<=lena||lenc<=lenb)
{
c[lenc]=a[lenc]+b[lenc]+up;
up=c[lenc]/10;
c[lenc]%=10;
lenc++;
}
c[lenc]=up;
if(c[lenc]==0) lenc--;
solv(w+1,b,lenb,c,lenc,k);
}
int main()
{
int n;
cin>>n;
num[0]=0,num[1]=1,num[2]=2;
if(n<=2)
printf("%llu\n",num[n]);
else if(n<100)
{
for(int i=3;i<=n;i++)
num[i]=num[i-1]+num[i-2];
printf("%llu\n",num[n]);
}
else {
int a[N]={0},b[N]={0};
a[0]=1,b[0]=2;
solv(3,a,0,b,0,n);
}
return 0;
}
by 456laji @ 2020-05-16 19:47:38
我很好奇,为什么我的递归会出现问题呢?
by 老子是北瓜 @ 2020-05-16 19:50:25
还是开全局变量稳一些
by 456laji @ 2020-05-16 20:01:29
@老子是白菜 若是开全局变量稍微不注意一点,会导致数组的内容错乱的。所以我就没有开了。
by 老子是北瓜 @ 2020-05-16 20:17:24
@456laji 确实各有各的长处可是我指针真的一窍不通啊
by SamariumPhosphide @ 2020-05-16 20:20:56
为啥要递归啊/fad
by 456laji @ 2020-05-16 20:24:26
@fürtän 因为这样写,会简单一些,所以就递归了
by SamariumPhosphide @ 2020-05-16 20:30:33
递归会简单一些 i 了 i 了
by Into_qwq @ 2020-05-16 20:38:30
dp多简单
by 456laji @ 2020-05-16 20:41:00
@IamnotTXN 嗯?这题可以用dp嘛,我不会dp
by Into_qwq @ 2020-05-16 20:45:55
@456laji 谔谔,可以啊