题意:输入一个自然数m,之后找出一个自然数q,使得这个数各个位上的数字之和等于输入的自然数
思路:搜索,就从9开始一直到2,是否能被输入的数整n除,可以的话,不断更新m的数值,贪心思想;不过要特判m=1的情况
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define N 100000
using namespace std;
int arr[N];
int main () {
int n;
scanf("%d", &n);
while (n--) {
int m;
scanf("%d", &m);
if (m == 1)
printf("1\n");
else {
int cnt = 0, num = 9;
while (num > 1) {
while (m % num == 0) {
arr[cnt++] = num;
m /= num;
}
num--;
}
if (m != 1)
printf("-1\n");
else {
for (int i = cnt - 1; i >= 0; i--)
printf("%d", arr[i]);
printf("\n");
}
}
}
return 0;
}