poj 2499 Binary Tree

思路:此题的数据规模太大了,肯定不能去递归,最后想到下面这个办法

由结果(s,e)向(1,1)推,如果s>e,s-=e;如果s<e,e-=s;但是由于数据太大了,减法要超时,所以改成除法就行了

View Code
#include <stdio.h>

int main()
{
int n,s,e,left,right,l=1,a;
scanf("%d",&n);
while(n--)
{
scanf("%d%d",&s,&e);
left=right=0;
while(s!=e)
{
if(s<e)
{
a=e/s;
e%=s;
if(e==0)a--,e++;
right+=a;
}
if(s>e)
{
a=s/e;
s%=e;
if(s==0)a--,s++;
left+=a;
}
}
printf("Scenario #%d:\n",l++);
printf("%d %d\n\n",left,right);
}
return 0;
}



posted @ 2011-11-25 22:06  104_gogo  阅读(172)  评论(0)    收藏  举报