您的位置:首页 > 其它

Ural1014-Product of Digits

2016-11-15 21:44 302 查看
给定一个数n,要求一个最小的Q,使得Q的每一位数相乘的积为n。

不断从9到2枚举n的因子,然后除掉,这样能够使得Q的位数最少。

最后倒序输出即可。

#include <cstdio>
#include <vector>

std::vector<int> v;

int main(int argc, char const *argv[]) {
int n;
while (scanf("%d", &n) == 1) {
if (n == 0) {
printf("10\n");
} else if (n < 10) {
printf("%d\n", n);
} else {
bool ok = true;
while (n != 1) {
ok = false;
for (int i = 9; i >= 2; i--) {
if (n % i == 0) {
v.push_back(i);
n /= i;
ok = true;
break;
}
}
if (!ok) {
printf("-1\n");
break;
}
}
if (ok) {
for (int i = v.size() - 1; i >= 0; i--) {
printf("%d", v[i]);
}
putchar('\n');
}
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: