/* * 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 "); return 0; } if (n == 1) { printf("1 "); 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 "); return 0; } } sort(a, a + num); int i; for (i = 0; i < num; ++i) { printf("%d", a[i]); } return 0; }