题解 | #数字阶梯求和#
数字阶梯求和
https://www.nowcoder.com/practice/c66df29f6c1c4dbba0bd51619210e082
#include <iostream> using namespace std; #include<vector> #include<math.h> vector<int> add(vector<int>a,vector<int>b){ vector<int>c; int t=0; for(int i=0;i<a.size()||i<b.size();i++){ if(i<a.size()) t+=a[i]; if(i<b.size()) t+=b[i]; c.push_back(t%10); t/=10; } if(t) c.push_back(1); return c; } int main() { int a,n; cin>>a>>n; vector<int>A,B,C; vector<int>temp; if(n==1) cout<<a; else{ int i=1; while(A.size()<n||B.size()<n){ A=temp; if(A.size()<n){ A.push_back(a); C=add(C,A); } // for(int i=A.size()-1;i>=0;i--) cout<<A[i]; // cout<<' '; B=A; //i++; if(B.size()<n) { B.push_back(a); C=add(C,B); } // for(int i=B.size()-1;i>=0;i--) cout<<B[i]; // cout<<' '; // cout<<endl; temp=B; //i++; } for(int i=C.size()-1;i>=0;i--) cout<<C[i]; } } // 64 位输出请用 printf("%lld")