题解 | #爬楼梯#简洁移动C++版
爬楼梯
http://www.nowcoder.com/practice/b178fcef3ed4448c99d7c0297312212d
简洁易懂C++版
因为会溢出,所以定义一个vector数组,当快溢出时新建一个数,即大于10的10次方,表示乘上10的10次方的数据,其代码如下,非常简洁!!!
#include<iostream> #include<vector> using namespace std; int main() { int n; while(cin>>n) { if (n==1) { cout<<1<<endl; continue; } vector<int> a,b,c; a.push_back(1); b.push_back(1); c.push_back(0); for(int i=1;i<n;++i) { int temp=0; for(int i=0;i<a.size();++i) { c[i]=(a[i]+b[i])%1000000000+temp; temp=(a[i]+b[i])/1000000000; } if(temp>0) c.push_back(temp); a=b; b=c; } for(int i=c.size()-1;i>=0;--i) cout<<c[i]; } }