D - số nguyên biến hóa vấn đề
Description
Số nguyên biến hóa vấn đề. Về số nguyên i biến hóa f cùng g định nghĩa như sau: f(i)=3i;
Thí thiết kế một cái thuật toán, đối với cấp định 2 cái số nguyên n cùng m, dùng ít nhất f cùng g biến hóa số lần đem n biến hóa vì m. Tỷ như, có thể đem số nguyên 15 dùng 4 thứ biến hóa đem nó biến hóa vì số nguyên 4: 4=gfgg(15). Đương số nguyên n không có khả năng biến hóa vì số nguyên m khi, thuật toán ứng như thế nào xử lý?
Đối tùy ý cấp định số nguyên n cùng m, tính toán đem số nguyên n biến hóa vì số nguyên m sở yêu cầu ít nhất biến hóa số lần.
Input
Đưa vào số liệu đệ nhất hành có 2 cái chính số nguyên n cùng m. n≤100000, m≤1000000000.
Output
Đem tính toán ra ít nhất biến hóa số lần cùng với tương ứng biến hóa danh sách phát ra. Đệ nhất hành là ít nhất biến hóa số lần. Đệ 2 hành là tương ứng biến hóa danh sách.
Sample
Input
15 4
Output
4
gfgg
Hint
#include<iostream>
usingnamespacestd;
intMax;
intn,m;
charfn[101];
intsearch(intstep,intsum)
{
if(step>Max)return0;
if(sum*3==m||search(step+1,sum*3))// tiến vào điều kiện
// này một bước hoàn thành sau được đến kết quả hoặc thông qua đệ quy biết được này là đi thông cuối cùng kết quả đường nhỏ
{
fn[step]='f';
return1;
}
if(sum/2==m||search(step+1,sum/2))
{
fn[step]='g';
return1;
}
return0;
}
intmain()
{
cin>>n>>m;
Max=1;
while(!search(1,n))
{
Max++;
}
cout<<Max<<endl;
for(inti=Max;i>=1;i--)
{
cout<<fn[i];
}cout<<endl;
return0;
}
//int search() phản hồi một cái giá trị cung trước mặt phán đoán
//void search() không có yêu cầu
// số tổ đảo nhớ rõ cuối cùng một bước
// chính xem là trình tự
// đề mục yêu cầu nghịch phát ra