1 #include<stdio.h> 2 #include<string.h> 3 #define maxn 100005 4 int ans[maxn]; //类似于 比较大的数组还是开导外面比较好一点,防止报错. 5 int main() 6 { 7 int x,y,m,T,n; 8 memset(ans,0,sizeof(ans)); //数组归零. 9 for(m=1;m<maxn;m++) //从 1 开始 遍历到 maxn. 10 { 11 x=y=m; // 将 x和y 都赋值为 m. 12 while(x>0) //x代表这 一个个的位数. 13 { 14 y=y+x%10; //处理 加起来... 15 x=x/10; 16 } 17 if(ans[y]==0||m<ans[y]) // 这个就用来确定 赋值的为 最小值 //后面那个 就是画蛇添足了 18 ans[y]=m; 19 } 20 scanf("%d",&T); 21 while(T--) 22 { 23 scanf("%d",&n); 24 printf("%d ",ans[n]); 25 } 26 return 0; 27 }
感觉第十七行 那里的 m<maxn[y] ........纯属画蛇添足..