poj2499

#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;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值