(贪心5.2.6)URAL 1014 Product of Digits(利用数据有序化进行贪心选择)

时间:2021-09-14 15:26:21
/*
* URAL_1014.cpp
*
* Created on: 2013年10月11日
* Author: Administrator
*/ #include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std; const int maxn = 11;
int a[maxn]; int main() {
int n;
scanf("%d", &n); if (n == 0) {
printf("10\n");
return 0;
} if (n == 1) {
printf("1\n");
return 0;
}
int num = 0;
while (n > 1) {
int i;
bool flag = false;
for (i = 9; i >= 2; --i) {//之所以从9开始扫是为了让分解出来的因子的高位数字小、少
if (n % i == 0) {//找到了其中一个因子
a[num++] = i;
n /= i;
flag = true;//依据题意,每次扫的时候都应该能从在2~9中找到一个因子邹泽则是不可分解的
break;//没找到一个因子以后都要重新扫..
}
} if(!flag){//这句话一定要加上,及应该在这里就进行判断,看这个数能否进行分解。否则就会出现死循环...如23 就不能进行分解
printf("-1\n");
return 0;
}
} sort(a, a + num); int i;
for (i = 0; i < num; ++i) {
printf("%d", a[i]);
} return 0;
}