题解:
改题目要求求出最小生成元,那么我们由1到100000打表出他们的最小生成元,在printf就ok了
#include <cstdio> #include <iostream> #include <string> #include <cstring> #include <algorithm> #include <map> using namespace std; int biao[100010]; int main() { //freopen("in.txt","r",stdin); //freopen("output.txt","w",stdout); for(int i = 1; i < 100000; i++){ int tmp = i; int sum = tmp; while(tmp > 0){ sum += tmp%10; tmp /= 10; } if(sum <= 100000 && !biao[sum]) biao[sum] = i; } int n; scanf("%d",&n); for(int i = 0; i < n; i++){ int tmp; scanf("%d",&tmp); if(biao[tmp]) printf("%d\n",biao[tmp]); else printf("0\n"); } return 0; }