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试了 都可以,为什么呀 ~~~
求大神指点

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

相关推荐

06-15 18:44
黄淮学院 Java
Lynn012:如果是居民楼还是算了吧,看着有点野呢
点赞 评论 收藏
分享
04-28 11:34
西北大学 运营
牛客4396号:不好意思,这个照片猛一看像丁真
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务