POJ 2499 Binary Tree

 

 

http://poj.org/problem?id=2499

题意:从(1,1)开始

向左走为(2,1),向右走为(1,2)

规律是 (m,n)

向左走为(m+n,n),向右走为(m,n+m)

求 要走到所给坐标 需要向左走多少步,向右走多少步;

 

思路:手写几步找下规律

逆向思维,从(m,n)到(1,1)。

给定(m,n),求其上一坐标,如果m>n,则上一坐标是(m-n,n),

否则(m,n-m)。

 1 # include <stdio.h>
 2 int main()
 3 {
 4     int n,m,t;
 5     int left,right,i=1;
 6     scanf("%d",&t);
 7     while(t--)
 8     {
 9         left=right=0;
10         scanf("%d%d",&n,&m);
11         while(n!=1 || m!=1)
12         {
13             
14             if(n>m)
15             {
16                 n=n-m;
17                 left++;
18             }
19             else
20             {
21                 m=m-n;
22                 right++;
23             }
24         }
25         printf("Scenario #%d:\n%d %d\n\n",i++,left,right);
26     }
27     return 0;
28 }
View Code

换个思路:

规律又有,当m>n时;

   向左走的次数为m%n 所到坐标为(m%n,n)

  特殊情况,当m%n==0的时候(即当n==1时)

   向左走的次数为m/n-1

当m<n时 类似、

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int a,h,n,m,l,r;;
 5     scanf("%d",&a);
 6     for(h=1;h<=a;h++)
 7     {
 8         scanf("%d %d",&m,&n);
 9         {
10             l=r=0;
11             while(m!=1||n!=1)
12             {
13                 if(m>n)
14                 {
15                     if(n==1)
16                     {
17                     l=l+m/n-1;
18                     m=1;
19                     }
20                     else
21                     {
22                         l=l+m/n;
23                         m=m%n;
24                     }
25                 
26                 }
27                 else
28                 {if(m==1)
29                 {
30                     r=r+n/m-1;
31                     n=1;
32                 }
33                     else
34                     {
35                         r=r+n/m;
36                         n=n%m;
37                     }
38                 
39                 }
40             }
41             printf("Scenario #%d:\n%d %d\n\n",h,l,r);
42         }
43     }
44     return 0;
45 }
View Code

 

 

posted on 2013-08-03 09:19  随风浪子的博客  阅读(101)  评论(0编辑  收藏  举报

导航