真香警告AQA @ 2024-11-12 13:43:33
写了个记忆化搜索发现wa了一半的点(输入为47就wa了不是炸数据大小的问题),没看懂哪个地方思路错了,求各位大犇看看
#include <stdio.h>
#include <string.h>
#define N 5050
typedef unsigned long long ull ;
ull memo[N];
//从x阶到y阶走法总数
int cal(int x,int y){
ull sum=0;
if(memo[x]!=0) return memo[x];
if(y==0) return 0;
if(x==y-1) return 1;
if(x==y) return 1;
sum=cal(x+1,y)+cal(x+2,y);
memo[x]=sum;
return sum;
}
int main(){
int n;
memset(memo,0,sizeof(memo));//抱着死马当活马医的态度写了个初始化
scanf("%d",&n);
printf("%d",cal(0,n));
return 0;
}
by wwwcn @ 2024-11-12 13:49:57
您好,这道题的答案为斐波那契数列第 n 项,数据范围远远超过了 unsigned long long 的存储范围,对此,您可以使用高精度或者用 python
by 真香警告AQA @ 2024-11-12 13:50:00
沃趣我发现了,我把ull用%d输出了TAT
by 真香警告AQA @ 2024-11-12 13:51:53
@wwwcn 懂了。没看到高精标签(笑哭了