A-B Problem
Time Limit: 1000MS
Memory Limit: 65536KB
Problem Description
这次当然不是简单的 a-b 呐~
有一个神奇的变换规则是这样的:
给定两个数 x1, x2,我们首先令 a = max(x1, x2), b = min(x1, x2)。
只要 a, b 不都为 1,我们就进行一次变换,令 a' = max(b, a-b),b' = min(b, a-b)(其中 a', b' 为本次变换后的 a, b)。当 a, b 都为 1 时变换结束。
现在请你来计算一下,对于给定的数 x1, x2,要经过多少次变换才能使 a, b 全部变成 1。
Input
输入数据有多组(数据组数不超过 40),到 EOF 结束。
每组数据包含两个整数 x1, x2 (1 <= x1, x2 <= 100)。
保证输入数据一定有解。
Output
对于每组数据,输出一个整数代表答案。每组输出占一行。
Example Input
1 2 1 3 3 2 4 5 1 4
Example Output
1 2 2 4 3
Hint
题目描述中的 min() 指两个数的最小值,max() 指两个数的最大值。
Author
【2016级《程序设计基础(B)I》期末上机考试-第二场】UMR
#include <stdio.h>
int main(){
int max , min , x , a , b;
while(~scanf("%d%d" , &a , &b))
{
x = 0;
if (a > b)
{
max = a;
min = b;
}
else
{
max = b ;
min = a ;
}
while(max != 1 || min != 1)
{
x++;
a = max;
b = min;
if (min > max - min)
{
max = min;
}
else
max = max - min;
if (b < a - b)
{
min = b;
}
else
min = a - b ;
}
printf("%d\n" , x);
}
}