poj2499

来源:互联网 发布:微信小店 源码 编辑:程序博客网 时间:2024/04/30 14:24

#include<stdio.h>
//这道题目用除法代替减法。
//大的不停的减去小的,实际上就是减去大的除以小的的商,不过如果除尽的话,就让次数减1
//因为最后结果不是0 0 而是1 1
//如果里面有一个是1,那么就可以结束了,因为前面的都是一种操作,要么一直
//左,要么一直右,所以直接跳出循环即可。挺有意思的。
void solve(int m,int n)
{
 int l=0,r=0;
 while(!(m==1&&n==1))
 {
  if(m>n)
  {
   l+=m/n;
   if(m%n==0)//为了让最后得到初始值1,1,而不是0 0,要少做一步
    l--;
   m=m%n;
   if(n==1)
    m=1;
  }
  else
  {
   r+=n/m;
   if(n%m==0)//同上
    r--;
   n=n%m;
   if(m==1)
    n=1;
  }
 }
 printf("%d %d/n",l,r);
}

int main()
{
 int t,m,n,cnt=0;
 scanf("%d",&t);
 while(t--)
 {
  cnt++;
  scanf("%d%d",&m,&n);
  printf("Scenario #%d:/n",cnt);
  solve(m,n);
  if(t!=0)
   printf("/n");
 }
 return 0;
}

 

原创粉丝点击