using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
namespace Timus_Online
{
class ProductOfDigits
{
static void Main()
{
string[] input = Console.In.ReadToEnd().Split(new char[] { ' ', '\t', '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries);
int N = int.Parse(input[0]);
int[] Prime = new int[]{9,8,7,6,5,4,3,2};
ArrayList myArry = new ArrayList();
bool flag=true;
if (N == 0)
myArry.Add(10);
else if (N < 10)
myArry.Add(N);
else
{
int temp;
for (int i = 0; i < Prime.Length; ++i)
{
if (N % Prime[i] == 0)
{
temp = Prime[i];
N /= Prime[i];
while (N % Prime[i] == 0)
{
if (temp * Prime[i] <= 9)
temp = temp * Prime[i];
else
{
myArry.Add(temp);
temp = Prime[i];
}
N /= Prime[i];
}
myArry.Add(temp);
}
}
if (N > 10)
flag = false;
}
if (flag == false)
Console.WriteLine("-1");
else
{
myArry.Sort();
foreach(int x in myArry)
{
Console.Write(x);
}
Console.WriteLine();
}
}
}
}
题目意思就不说了。
方法:
因为N是1到9之间的数的积,所以从大到小找出N在1到9之间的因数就行了。最后从小到大排序后就是结果了。
如果N不论怎么分解,总是有一大于10的因数,则输出-1.
另外0要特别处理,因为find the minimal positive integer number Q. 语言的差别真要命。。。