给出两种方法吧
第一种:(这个仅提供参考,在oj上是过不了的)
#include<bits/stdc++.h>
using namespace std;
void want(int n)
{
int flag=1;
for(int m=1;m<n;m++)
{
int x=m,y=m;
while(x>0)
{
y+=x%10;
x/=10;
}
if(y==n)
{
cout<<m<<endl;
flag=0;
break;
}
}
if(flag) cout<<0<<endl;
}
int main()
{
int n;
scanf("%d",&n);
while(n--)
{
int x;
scanf("%d",&x);
want(x);
}
return 0;
}
第二种:
#include<bits/stdc++.h>
using namespace std;
#define maxn 100010
int ans[maxn];
int main()
{
int T,n;
memset(ans,0,sizeof(ans));
for(int i=1;i<maxn;i++)
{
int temp=i,temp1=i;
while(temp>0)
{
temp1+=(temp%10);
temp/=10;
}
if(ans[temp1]==0||ans[temp1]>i)
ans[temp1]=i;
}
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
printf("%d\n",ans[n]);
}
return 0;
}