题意:
给出s和n
请构造n个十进制正整数,满足他们在十进制下的和等于s,且在十一进制下的和最大
如果n<=s的数位和,那么只要不把一个高位拆成10个低一位,在十一进制下的和都是一样的
这给我们的启示是尽可能不要拆高位,当因为正数限制不得不拆高位时再拆
所以让前n-1个数都是尽可能大的10的幂次,最后的都给第n个数即可
#include<bits/stdc++.h> int main() { int T,s,n,x; scanf("%d",&T); while(T--) { scanf("%d%d",&s,&n); for(int i=1;i<n;++i) { x=pow(10,(int)log10(s-(n-i))); printf("%d ",x); s-=x; } printf("%d\n",s); } }