大数问题,每次加一,直到超过 n 位数。
#include <iostream>
#include <vector>
using namespace std;
vector<int> add(vector<int>& a, vector<int>& b){
if(a.size() < b.size())return add(b, a);
vector<int> c;
int t = 0;
for(int i = 0; i < a.size(); i ++){
t += a[i];
if(i < b.size())t += b[i];
c.push_back(t % 10);
t /= 10;
}
if(t)c.push_back(t);
return c;
}
void print(const vector<int>& a){
for(int i = a.size()-1; i >= 0; i --)printf("%d", a[i]);
puts("");
}
vector<int> one = {1};
int main(){
int n;
cin >> n;
vector<int> a;
a.push_back(0);
while(a.size() <= n){
a = add(a, one);
if(a.size() <= n)print(a);
}
return 0;
}