think:
1打表枚举所有符合题意的元素,然后直接查询
以下为Accepted代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
int T, n, i, j, k, sum, tp, link[14];
int ans[100004];
memset(ans, 0, sizeof(ans));
for(i = 0; i < 100000; i++)
{
tp = 0, k = i, sum = i;
while(k)
{
link[tp] = k%10;
sum += link[tp];
tp++;
k /= 10;
}
k = i;
for(j = 0; j < tp; j++)
k += link[j];
if(sum == k)
{
if(ans[sum] == 0)
ans[sum] = i;
}
}
scanf("%d", &T);
while(T--)
{
scanf("%d", &n);
printf("%d\n", ans[n]);
}
return 0;
}
以下为Accepted代码——建议参考代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
int T, n, m, x, y;
int ans[100004];
memset(ans, 0, sizeof(ans));
for(m = 1; m < 100000; m++)
{
x = m, y = m;
while(x)
{
y += x%10;
x /= 10;
}
if(y <= 100000)
{
if(ans[y] == 0 || m < ans[y])
ans[y] = m;
}
}
scanf("%d", &T);
while(T--)
{
scanf("%d", &n);
printf("%d\n", ans[n]);
}
return 0;
}