题解 | 数字
数字
https://ac.nowcoder.com/acm/contest/53642/E
贪心。1,2,3……这样切,不能再切时把剩余的尽可能往前堆
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
ll n;
vector<ll> ve;
int main(){
cin>>n;
for(int i=1;i<=9;i++){
if(n>=i){
n-=i;
ve.push_back(i);
}else{
ve.push_back(10);
ll plu=n;
if(n==0) break;
for(int j=ve.size()-2;j>=0;j--){
while(plu>0&&ve[j]+1<ve[j+1]){
ve[j]++;
plu--;
}
}
break;
}
}
if(ve.back()!=10)
ve.push_back(10);
for(int i=ve.size()-2;i>=0;i--)
cout<<ve[i];
}