N阶楼梯问题:求帮助

//N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式。(要求采用非递归) 
#include<stdio.h>
int main(){
	int i, N;
	long long a[90];
	while (~scanf("%d", &N)){
          a[1] = 1;
            a[2] = 2;
            for (i = 3; i<=N; i++)
			a[i] = a[i - 1] + a[i- 2];   
		printf("%lld", a[N]);
	}	
}
百度得到的答案,试着运行之后,把longlong 改成 int就不行,跪求解答 这个longlong的好处、、
还有为甚么要在输入的时候取反呢,也是不懂;
将这个程序输入到牛客网中,未通过、、、用vs试了 都可以,为什么呀 ~~~
求大神指点

全部评论
long long 是64位 int 是32位...你说有啥区别 scanf如果读入失败返回-1 取反就是0了 代表读入结束
点赞 回复 分享
发布于 2017-03-09 17:14
当有89级台阶的时候,结果是一个19位的数,如果你定义为int型的数组,是无法存储这么大的数的,会溢出。用long long刚好可以保存。 因为long long的最大值:9223372036854775807
点赞 回复 分享
发布于 2017-03-09 17:15

相关推荐

昨天 12:43
已编辑
门头沟学院 C++
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务