洛谷传送门:Minimum Varied Number - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
难度:普及- (个人认为入门难度)
知识点:贪心
思路:
位数小是优先度最高的,让每个数字越大,用的位数就越小
位数确定之后,就是用这些数拼成的数字最小,从小到大放就好了
AC代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
int q; scanf("%d", &q);
while(q--){
int s; scanf("%d", &s);
int a = 10;
vector<int> arr;
while(--a){
if(s-a>=0){
arr.push_back(a);
s -= a;
}
}
for(int i = arr.size()-1; i>=0; i--) printf("%d", arr[i]);
printf("\n");
}
return 0;
}
/*
知识点:贪心
思路:
位数小是优先度最高的
让每个数字越大,用的位数就越小
位数确定之后,就是用这些数拼成的数字最小,从小到大放就好了
心路历程:
找规律
位数最小优先
1位:1-9
2位:10-17(89)
3位:18-(789)
耗时20min
*/