题意:给你一张长方形的纸,你每一次撕掉最大的那个正方形,然后剩下来一块矩形,再继续对剩下的矩形进行这个操作,一直到这个剩下的矩形是个正方形。
解题思路:递归
解题代码:
1 // File Name: a.cpp 2 // Author: darkdream 3 // Created Time: 2015年03月18日 星期三 00时41分16秒 4 5 #include<vector> 6 #include<list> 7 #include<map> 8 #include<set> 9 #include<deque> 10 #include<stack> 11 #include<bitset> 12 #include<algorithm> 13 #include<functional> 14 #include<numeric> 15 #include<utility> 16 #include<sstream> 17 #include<iostream> 18 #include<iomanip> 19 #include<cstdio> 20 #include<cmath> 21 #include<cstdlib> 22 #include<cstring> 23 #include<ctime> 24 #define LL long long 25 26 using namespace std; 27 LL solve(LL a, LL b) 28 { 29 30 if(b > a ) 31 swap(a,b); 32 if(b == 0 ) 33 return 0; 34 return a/b + solve(b,a%b); 35 } 36 int main(){ 37 LL n , m; 38 scanf("%lld %lld",&n,&m); 39 printf("%lld ",solve(n,m)); 40 return 0; 41 }