题干:

描述

 

对一个给定的矩形,将其划分成尽可能少的正方形,输出正方形的最少个数。例如,如下图所示的情况,则输入为3和4,输出为4。

输入

 

输入两个整数中间用空格分开。

输出

 

输出最少分割成的正方形的个数。

输入样例 1 

3 4

输出样例 1

4

解题报告:

   简单递归。  这题如果是t组数据的话,这个f函数就可以写记忆化了。。。但是这个题就没必要了,因为状态转移之间没有重叠子问题,所以不需要dp。

AC代码:

#include<bits/stdc++.h>

using namespace std;
int f(int x,int y) {
	if(x == y) return 1;
	if(x > y) {
		return f(x-y,y) + 1;
	}
	else return f(y-x,x) + 1;
}
int main()
{
	int n,m;
	while(cin>>n>>m) {
		cout << f(n,m)<<endl;
	}
	
	return 0;
 }