题目描述
分析
因为要打印字典序最大的
所以对于每一对
n
n
n和
m
m
m,我们可以先使
n
<
=
m
n<=m
n<=m,然后打印
⌊
\lfloor
⌊
m
n
\frac{m}{n}
nm
⌋
∗
n
\rfloor*n
⌋∗n个
n
n
n。
然后再使
m
=
m
%
n
m=m\%n
m=m%n,直到
m
=
0
m=0
m=0。
这像什么?辗转相除法。
于是计算的函数就长这样
void gcd(int n,int m)//连名字都直接用了gcd
{
if(n==0) return;
for(int i=0;i<(m/n)*n;i++) ans.push_back(n);
gcd(m%n,n);
}
主程序里只要确保传入函数的 n < = m n<=m n<=m和打印答案即可