Dream2016は猫の病院年生です。人間の文化レッスンの検査今朝の半分、質問があります:正の整数で与えられたnは、その製品がnに等しくなるように、1以上の整数K(リピート)を見つける。
入力
の最初の行は、2つの整数を含むnと、 Kは、(N-2≤≤100000 ,. 1≤K≤20である)。
出力が
有効な応答出力がない場合は-1。
そうでない場合は、任意の整数kを順次出力。彼らの製品は、nに等しくなければなりません。複数のスキームがある場合は、いずれかを出力することができます。
例
Input
5 1
Output
5
Input
5 2
Output
-1
Input
1024年5
Output
2 64 2 2 2
#include<cstdio>
#include<vector>
#include <iostream>
#include<queue>
#define maxn 5005
#define maxm 200005
#define ri register int
using namespace std;
int n,m,k;
int a[120];
int main()
{
while(cin>>n>>k)
{
if(k==1)
{
printf("%d\n",n);
continue;
}
int z=0;
while(1)
{
for(ri i=2;i<=n;i++)
{
if(n%i==0)
{
n/=i;
a[z++]=i;
break;
}
}
if(z==k-1||n==1)
break;
}
if(z<=k-1&&n==1)
{
printf("-1\n");
}
else
{
for(ri i=0;i<z;i++)
printf("%d ",a[i]);
printf("%d\n",n);
}
}
}