题意:给一个这样的二叉树,每个节点用一对数(a,b)表示,根节点为(1,1)。设父亲为(a,b),左儿子(a+b,b),右儿子(a,a+b)。
  给几组数据,(i,j),求从根节点到(i,j)节点需要向左子树走多少次,往右子树多少次。
思路:可以发现:当i>j时,(i,j)为左儿子;当i<j时,(i,j)为右儿子。
    设父节点为(a,b),往左子树需要走l次,往右子树需要走r次,那么:
    1.i>j时:i=a+b,j=b -> a=i-j,b=j l++;
    2.i<j时:i=a,j=a+b -> a=i,b=j-i r++;

当然,写代码时不能一个一个减,会超时的。一次性把能减的都减去。

#include <iostream>
#include <stdio.h>
/*
AC
给一个这样的二叉树,每个节点用一对数(a,b)表示,根节点为(1,1)。设父亲为(a,b),左儿子(a+b,b),右儿子(a,a+b)。
给几组数据,(i,j),求从根节点到(i,j)节点需要向左子树走多少次,往右子树多少次。
思路:可以发现:当i>j时,(i,j)为左儿子;当i<j时,(i,j)为右儿子。
设父节点为(a,b),往左子树需要走l次,往右子树需要走r次,那么:
1.i>j时:i=a+b,j=b -> a=i-j,b=j l++;
2.i<j时:i=a,j=a+b -> a=i,b=j-i r++; */
using namespace std; int main()
{
int t;
scanf("%d",&t);
long long i,j;
int l,r;
for(int w=;w<=t;w++){
l=;r=;
scanf("%lld%lld",&i,&j);
while(){
if(i== && j==)
break;
/*
若i>j,只要求i中有多少个j,即i/j,l+=i/j,最后再把i剩下的赋值给i
若i<j,只要求j中有多少个i,即j/i,r+=j/i,最后再把j剩下的赋值给j
*/
if(i>j){
l+=i/j;
i-=i/j*j;
//若i是j的倍数,即当j=1时,l要减去1,退出循环
//也可以上面l+=(i-1)/j,这样就不用讨论i=0的情况了。
if(i==){
l--;
break;
}
}
else{
r+=j/i;
j-=j/i*i;
//若j是i的倍数,即当i=1时,r要减去1,退出循环
//也可以上面r+=(j-1)/i,这样就不用讨论j=0的情况了。
if(j==){
r--;
break;
}
}
}
printf("Scenario #%d:\n",w);
printf("%d %d\n",l,r);
puts("");
}
return ;
}

POJ 2499 Binary Tree(二叉树,找规律)的更多相关文章

  1. [HDOJ5573]Binary Tree(找规律,贪心)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5573 这个题……规律暂时还找不到,先贡献两发TLE的代码吧,一个dfs一个状压枚举. #include ...

  2. Poj 2499 Binary Tree(贪心)

    题目链接:http://poj.org/problem?id=2499 思路分析:结点向左边移动时结点(a, b)变为( a+b, b),向右边移动时( a, b )变为( a, a + b); 为求 ...

  3. POJ 2499 Binary Tree

    题意:二叉树的根节点为(1,1),对每个结点(a,b)其左结点为 (a + b, b) ,其右结点为 (a, a + b),已知某结点坐标,求根节点到该节点向左和向右走的次数. 分析:往回一步一步走肯 ...

  4. HDU 5573 Binary Tree(找规律)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5573 题意:给你一个完全二叉树,节点为自然数的排列(第一行1,第二行2 3,第三行4 5 6 7... ...

  5. [LeetCode] 111. Minimum Depth of Binary Tree 二叉树的最小深度

    Given a binary tree, find its minimum depth. The minimum depth is the number of nodes along the shor ...

  6. [LeetCode] 543. Diameter of Binary Tree 二叉树的直径

    Given a binary tree, you need to compute the length of the diameter of the tree. The diameter of a b ...

  7. Leetcode 110 Balanced Binary Tree 二叉树

    判断一棵树是否是平衡树,即左右子树的深度相差不超过1. 我们可以回顾下depth函数其实是Leetcode 104 Maximum Depth of Binary Tree 二叉树 /** * Def ...

  8. [LeetCode] 111. Minimum Depth of Binary Tree ☆(二叉树的最小深度)

    [Leetcode] Maximum and Minimum Depth of Binary Tree 二叉树的最小最大深度 (最小有3种解法) 描述 解析 递归深度优先搜索 当求最大深度时,我们只要 ...

  9. Full Binary Tree(二叉树找规律)

    Description In computer science, a binary tree is a tree data structure in which each node has at mo ...

随机推荐

  1. log4j自动生成日志文件配置

    生成文件到默认位置: #生成日志文件 #log4j.appender.systemFile=org.apache.log4j.RollingFileAppender #按天生成 log4j.appen ...

  2. The New Debugger

    在debug下有一个中文叫做杂项的选项卡下有配置的内容 里面可以配置debug的模式 有的时候一些莫名其妙的问题需要 调整里面的设置 <<SAP debug的几种方式.pdf>> ...

  3. MySQL事务机制

    事务机制的特性通常被概括为"ACID原则" A(Atomic) 原子性: 构成一个事务的所有语句应该是一个独立的逻辑单元,要么全部执行成功, 要么一个都不成功, 你不能只执行他们当 ...

  4. NSS_09 gridpanel中的actioncolumn事件

    在设计角色权限时, 终于用到了grid的actioncolumn,如下: { header: '权限设定', xtype: 'actioncolumn', items: [{ icon: 'Conte ...

  5. WCF 服务的ABC之契约(七)

    契约 Contract WCF的所有服务都会公开为契约(Contract),契约与平台无关,是描述服务功能的标注方式. 服务契约(Service Contract) 服务契约描述的是一个服务,它定义了 ...

  6. HIVE中join、semi join、outer join举例详解

    转自 http://www.cnblogs.com/xd502djj/archive/2013/01/18/2866662.html 举例子: hive> select * from zz0;  ...

  7. 节点属性(DOM对象)

    节点属性 在文档对象模型 (DOM) 中,每个节点都是一个对象.DOM 节点有三个重要的属性 : 1. nodeName : 节点的名称 2. nodeValue :节点的值 3. nodeType ...

  8. php威盾解密的例子分享

    例子,批量解密  代码如下 复制代码 <?php/************************************威盾PHP加密专家解密算法 By:zhrt*http://www.111 ...

  9. 客户端访问WebService和PageMethod

    客户端访问WebService 客户端访问WebService和后台访问WebService没什么不同,注意的地方是要在ScriptManager中添加 <Services>        ...

  10. [CSS]学习总结

    1. 遮挡层 .occlusion { opacity: -.35;/*透明程度*/ -moz-opacity: -.35; filter: alpha(opacity=-35); height: 1 ...