枚举1~100000把所有数的最小generators记录下来,直接查表即可。
AC代码:
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int maxn=100000+50; int ans[maxn]; int get(int a){ int b=a; while(b>0){ a+=b%10; b/=10; } return a; } void solve(){ memset(ans,0,sizeof(ans)); for(int i=0;i<=100000;++i){ int p=get(i); if(ans[p]==0) ans[p]=i; } } int main(){ solve(); int T,n; scanf("%d",&T); while(T--){ scanf("%d",&n); printf("%d\n",ans[n]); } return 0; }
如有不当之处欢迎指出!